ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

堆排序

2020-09-20 08:35:02  阅读:224  来源: 互联网

标签:标号 大根堆 结点 堆排序 根堆 数组


堆的结构可以分为大根堆和小根堆,是一个完全二叉树,而堆排序是根据堆的这种数据结构设计的一种排序。

大根堆:每个结点的值都大于其左孩子和右孩子结点的值。

小根堆:每个结点的值都小于其左孩子和右孩子结点的值。

堆可以采用数组存储,结点的标号从 $0$ 开始,则对任一个结点 $i$,其左孩子的结点标号为 $2i+1$,右孩子的结点标号为 $2i+2$。

下面以大根堆为例,介绍堆排序的基本步骤。

    1)首先将待排序的数组构造成一个大根堆,此时,整个数组的最大值就是堆结构的顶端。

    2)将顶端的数与末尾的数交换,此时,末尾的数为最大值,剩余待排序数组个数为 $n-1$。

    3)将剩余的 $n-1$ 个数再构造成大根堆,再将顶端数与 $n-1$ 位置的数交换,如此反复执行,便能得到有序数组(一开始就是数组存储的)。

可以发现:这个算法最重要的操作就是将树调整为大根堆

 

 

 

未完待续。。。。。。

标签:标号,大根堆,结点,堆排序,根堆,数组
来源: https://www.cnblogs.com/yanghh/p/13698675.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有