请问这个用C语言写的堆排序算法错在哪里

高桥美惠 高桥美惠 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
#include<stdio.h>
#include<math.h>

int left(int i)
{ return (i*2);
}

int right(int i)
{ return (i*2+1);
}

void exchange(int A[],int i,int j)
{ int temp;
temp=A[i-1]; A[i-1]=A[j-1]; A[j-1]=temp;
}

void MAX_HEAPIFY(int A[10],int i,int length,int heapsize)
{ int l,r,largest;
l=left(i); r=right(i);
if(l<=heapsize && A[l-1]>A[i-1])
largest=l;
else
largest=i;
if(r<=heapsize && A[r-1]>A[i-1])
largest=r;
if(i!=largest)
{ exchange(A,i,largest);
MAX_HEAPIFY(A,largest,length,heapsize);
}
}

void BUILD_HEAP(int A[10],int length,int heapsize)
{ for(int i=floor(length/2);i>=1;i--)
MAX_HEAPIFY(A,i,length,heapsize);
}

void HEAPSORT(int A[10],int length,int heapsize)
{ BUILD_HEAP(A,length,heapsize);
for(int i=length;i>1;i--)
{ exchange(A,1,heapsize--);
MAX_HEAPIFY(A,1,length,heapsize);
}
}

int main()
{ int A[10]={12,1,5,2,3,8,6,7,19,15},length=10,heapsize=10;
HEAPSORT(A,length,heapsize);
for(int i=0;i<10;i++)
printf("%d ",A[i]);
}
...全文
评论 2
收藏 已收藏
分享
返回顶部
高桥美惠
C语言 70,040 成员 243,237 内容