堆排序菜鸟入门
发布日期:2021-06-30 10:11:55
浏览次数:2
分类:技术文章
本文共 1026 字,大约阅读时间需要 3 分钟。
了解过快速排序和归并排序之后,还有一个比较实用而且和前两者的时间效率相同的排序自然要学习一下了。
在有了那么多高手的博客,我还写这个,主要是为了自学,加个原创是为了有激情哈哈
直接来
实例: Arr[14] = {9,8,5,2,1,4,7,6,3,0,15,5,9,4};将该数组进行堆排序。
首先,讲二叉堆的两个性质
就是求最后一个非叶子节点,和父子节点的关系。
Arr[14] = {9,8,5,2,1,4,7,6,3,0,15,5,9,4} 的二叉堆是:
接着:
获得第一个有序的二叉堆比较复杂,之后每次只需要将用来交换的分支排序即可
代码,参考百度百科,与上图一一对应》》》》》
#include //建堆void HeapAdjust(int array[],int i,int nLength){ int nChild; int nTemp; //1.如果左子节点存在的话,左右子节点进行比较然后,得出较大的Array[nChild] //2.将较大的子节点与该父节点比较,大于父节点则交换,小于则退出。 //3.将与父节点交换的子节点作为父节点循环,目的是取出该分支剩下的最大的值 //4.直到没有子节点为止 for(;2*i+1 array[nChild]) ++nChild; if(array[i] =0;i--) HeapAdjust(array,i,length); //第二步,每次交换堆顶值,然后排序。 for(i=length-1;i>0;i--) { array[i]=array[0]^array[i]; array[0]=array[0]^array[i]; array[i]=array[0]^array[i]; HeapAdjust(array,0,i); }}int main(){ int i; int num[]={9,8,5,2,1,4,7,6,3,0,15,5,9,4}; HeapSort(num,sizeof(num)/sizeof(num[0])); for(i=0;i
只是学习,多有不足,只能上了。
转载地址:https://islet.blog.csdn.net/article/details/76552147 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
关注你微信了!
[***.104.42.241]2024年04月13日 15时33分53秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
基于java的SSM框架的流浪猫救助网站的设计与实现
2019-04-30
基于java的SSM框架的教务关系系统的设计与实现
2019-04-30
别再问我什么是A/B测试了!
2019-04-30
如何用同期群分析模型提升留存?(Tableau实战)
2019-04-30
爱了,吹爆这个高颜值的流程图工具!
2019-04-30
一个数据项目
2019-04-30
相亲多少次就该做出决定了?答案是:37%
2019-04-30
数据分析 | 指标字典该如何搭建和推行?
2019-04-30
图解大公司通病,太形象了!
2019-04-30
天秀!Pandas输出的表格竟然可以动起来?
2019-04-30
数据科普:期权的隐含波动率(投资必知必会)
2019-04-30
没有项目经验,可以拿这个练手
2019-04-30
数据分析师 如何工作中 提升 思维能力
2019-04-30
Matplotlib 绘图可视化时 正确显示中文的四种方式
2019-04-30
必须吐槽!我就想写个爬虫,怎么要学那么多东西?
2019-04-30
学 MySQL 必须了解的10个高级概念!
2019-04-30
作为程序员,你还在用B站学习?
2019-04-30
吐槽一下!Pandas用了这么久,有觉得哪里不好的地方吗?
2019-04-30
学会这个数据可视化技巧,搞定NB炫酷的大屏设计!
2019-04-30