本文主要是介绍随便写了个堆排序程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
#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; }
这篇关于随便写了个堆排序程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!