//只是建堆
#include<stdio.h>
#include<stdlib.h>
int heapmax(int A[],int i,int length);
int heapsort(int A[],int length);
int main(void)
{
int A[10]={4,1,3,2,16,9,10,14,8,7};
int length=sizeof(A)/sizeof(int);
heapsort(A,length);
int i;
for(i=0;i<10;i++)
printf("%d\n",A[i]);
//printf("kkkkkkkkk%d\n",kkk);
return 0;
}
int heapmax(int A[],int i,int length)//假设节点i的左右子树都是最大堆
{
//int ob=i;printf("%d\n",ob);
int l=2*i+1;//printf("%d\n",l);
int r=2*i+2;
int key=0;
//int kkkk;
//printf("%d-----%d----%d----%d\n",i,l,r,key);
//int yyy=length;
puts("Hola?");
//int length=sizeof(A)/sizeof(int);
printf("%d~~~~\n",length);
if(A[i]<A[l]&&l<length)
key=l;
else
key=i;
if(A[r]>A[key]&&r<length)
key=r;
if(key!=i)
{
int kkkk;
kkkk=A[i];
A[i]=A[key];
A[key]=kkkk;
heapmax(A,key,length);
}
}
int heapsort(int A[],int length)
{
//length[A]=10;
int i;
for(i=(length-1)/2;i>=0;i--)
heapmax(A,i,length);
}
算法导论,堆排序,c实现。
最新推荐文章于 2021-03-08 23:45:21 发布
本文深入探讨了堆排序算法的原理与实现过程,通过具体代码实例展示了如何使用堆排序对数组进行高效排序。
2237

被折叠的 条评论
为什么被折叠?



