博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8)排序②排序算法之选择排序[2]堆排序
阅读量:5795 次
发布时间:2019-06-18

本文共 1250 字,大约阅读时间需要 4 分钟。

1 #include "iostream" 2 #include "iomanip" 3 #include "time.h" 4 using namespace std; 5  6 #define num 28 7 typedef int type;//type类型为int 8  9 /*10 *调整数组A中以K为根的子序列为堆,其中最大的元素下标为m11 *假设以2k,2k+1为根的左右子树均是堆12 */13 void sift(type Array[],int k,int m)14 {15     int i,j,x;16     bool finished = false;17 18     x =Array[k];//临时保存当前根植19     i = k;//指示空位20     j = 2*i;//j先指向其左孩子结点21     while(j<=m &&!finished)//确定i结点不是叶子节点且搜索未结束22     {23         if((j
=Array[j])finished = true;//若原根最大,置搜索和帅选结束标志25 else{26 Array[i] = Array[j];//大的孩子结点值上移27 i = j;//继续往下帅选:i指示新的空位,j相应改变28 j*=2;29 }30 }31 Array[i] = x;//将原根值填充到所搜索到的当前的空位置中32 }33 34 /*35 *对数组Array中下标为1~n的元素用堆排序算法实现排序36 */37 void Heap_Sort(type Array[],int n)38 {39 int i;40 time_t start,end;41 start = clock();42 for(i=n/2;i>=1;i--)43 {44 sift(Array,i,n);//建初始堆45 }46 for(i=n;i>=2;i--)//控制排序过程47 {48 type temp;49 temp = Array[1];50 Array[1] = Array[i];51 Array[i] = temp;52 sift(Array,1,i-1);//调整子序列Array[1]~Array[i-1]为堆53 }54 end = clock();55 cout<<"The Heap_Sorted Array:"<

转载于:https://www.cnblogs.com/minmsy/p/5018918.html

你可能感兴趣的文章
Node.js中http-server的使用
查看>>
Linux系统(centos)同步时间方式
查看>>
python格式化输出的几种方式
查看>>
方法的命名方式
查看>>
nginx之location配置
查看>>
资深专家深度剖析Kubernetes API Server第3章(共3章)
查看>>
Filter a View by “Me” Without a People Column
查看>>
ArcGIS制作放射状流向地图(Radial Flow Map)
查看>>
2015 Multi-University Training Contest 1
查看>>
powermock单元测试小结
查看>>
苹果iPad二代新功能大预测
查看>>
【2017】Speed Limit (水题)POJ
查看>>
浅谈函数的可变参数
查看>>
java 8大数据类型
查看>>
C#、ASP.NET获取当前应用程序的绝对路径,获取程序工作路径 (转帖)
查看>>
JavaScript中对象数组 根据某个属性值进行排序
查看>>
Generalized Low Rank Approximation of Matrices
查看>>
50个常用的sql语句
查看>>
IIS7下设置共享文件夹为虚拟目录
查看>>
IIS支持IPA、APK文件的下载
查看>>