}
//堆排序算法
//data,要排序的数组
//n,数组大小
void HeapSort(int data[],int n)
{
int i;
//初始建堆
for(i = n/2;i > 0;--i)
{
AdjustHeap(data,i,n);
}
//每次循环将堆顶元素与有序区第一个元素交换,然后再调整堆
for(i = n;i > 1;--i)
{
swap(1,i);
AdjustHeap(data,1,i - 1);
}
int main()
{
freopen("random","r",stdin);
freopen("oder","w",stdout);
int i;
for(i = 1;i <= MAX;++i)
{
scanf("%d",&data[i]);
}
//stderr("开始排序\n");
HeapSort(data,MAX);
//stderr("排序结束\n");
for(i = 1;i <= MAX;++i)
{
printf("%d\n",data[i]);
}
return 0;
}