#include
#include
#define MAX_NUMBER 10
void swap(int *a, int *b)
{
int tmp;
tmp = *a;
*a = *b;
*b = tmp;
}
void heap_sort(int data[],int length)
{
int i,j,root_index;
for(i=length-1;i>0;i--)
{
for(j=i;j>0;j--)
{
if(j%2 ==0)
root_index = (j-2) / 2;
else
root_index = (j-1) / 2;
if(data[root_index] < data[j]) //从小到大排序
swap(&data[root_index],&data[j]); //将最大值递归提取到根节点
}
swap(&data[j],&data[i]); //此时j已经是0了,即交换根节点与队列最后的值
}
}
int main()
{
int random[MAX_NUMBER];
int i;
for(i=0;i< MAX_NUMBER;i++)
{
random[i] = rand()%MAX_NUMBER;
printf("random[%d]=%d\n",i,random[i]);
}
heap_sort(random,MAX_NUMBER);
for(i=0; i< MAX_NUMBER; i++)
{
printf("%d\n",random[i]);
}
return 0;
}