算法1:
void Heap_Sort(int []a,int n){
BuildHeap(a);
for(int i=0;i<n;i++){
temp[i]=DeleteMin(a); //浪费空间,多出一个temp数组,浪费时间,复制也要时间
}
for(int i=0;i<n;i++){
a[i]=temp[i];
}
}
算法2:
void Heap_Sort(int a[],int x){
for(i=n/2;i>=0;i--){
PercDown(a,i,n);/* BuildMaxHeap,a是数组,i是节点索引,n是堆里面元素的个数,PerDown是把索引为i的节点调为符合最大堆的节点 */
}
for(i=n-1;i>=0;i--){
swap(a[0],a[i]); //把最大的数即a[0]换到最后面
PercDown(a,0,i);
}
}