算法珠玑--再看堆排序(Heap Sort)的实现 (二)

2014-11-24 03:18:27 · 作者: · 浏览: 1
arget] = nTemp;//最后将要调整的元素放到合适的位置
}

//堆排序算法
//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;
}