#include <iostream>
using namespace std;
void HeapAdjust(int num[],int low,int high){
int temp; //用于交换数据
temp = num[low];
for(int i = 2*low; i <= high; i *= 2){
if(i < high && num[i] > num[i+1])
++i; // 选取分支中较小的一个
if(temp <= num[i])
break;
num[low] = num[i]; //找到插入位置
low = i;
}
num[low] = temp;
}
void HeapSort(int thenum[]){
int i;
for(i = 5; i>0; --i)
HeapAdjust(thenum,i,10);
for(i = 10; i>0; i--){ //输出堆顶,并重新堆排序
cout << thenum[1]<< " ";
thenum[1] = thenum[i];
HeapAdjust(thenum,1,i-1);
}
}
int main()
{
int mynum[11] = { 999999,4,0,5,1,6,7,9,2,8,3};
cout << "排序结果:" << endl;
HeapSort(mynum);
return 1;
}
随便写了个堆排序程序
最新推荐文章于 2022-10-13 09:15:11 发布