堆排序其实没那么难

作者: 吃菜长肉 | 来源:发表于2019-12-17 12:27 被阅读0次
image

堆指的是每个节点的值大于等于或小于等于左右节点的值的完全二叉树结构,堆又分****大****顶堆(每个节点的值大于等于左右节点的值)和****小****顶堆(每个节点的值小于等于左右节点的值)

image

使用堆进行排序的前提是要先构造一个堆出来,这里以大顶堆为例。

给定一个数组进行构造大顶堆。

image

构造大顶堆的主要思路:

1、n个数据;

2、从待处理的数据里取出一个数据,插入到堆的尾部,并调整成大顶堆;

** 2.1、如果调整的节点值比其父节点值大,那么两个节点交换值,重复该步骤,直到调整的节点是根节点;**

** 2.2、否则插入节点后就是大顶堆,无需调整;**

3、重复步骤2直到所有数据已取出。

构造堆的代码实现:

image

堆也构建完了,那么剩下就是该怎么排序了,排序的思路是:

1、有n个元素的大根堆;

2、用根节点和当前堆的最后一个节点进行交换;

3、将剩下的n-1个元素再调整成大顶堆(调整大顶堆思路参照构造大顶堆的思路);

4、重复步骤2、步骤3,直到完成排序。

代码实现:

image

得到的数组,逆序输出就是排序后的数组了。

关注公众号「吃菜长肉」,获取更多内容。

推荐阅读:

5分钟搞定快速排序

常见排序算法(1)一一插入排序

相关文章

  • 堆排序其实没那么难

    堆指的是每个节点的值大于等于或小于等于左右节点的值的完全二叉树结构,堆又分****大****顶堆(每个节点的值大于...

  • 其实没那么难

    以前看过一则研究报告,报告说一个人对一件事物的评价,主观因素的评价的影响占了很大的比例。 仔细一想...

  • 其实没那么难

    惆怅于心 看生灵万物 都是灰蒙一片 真难 怨天将任于己 却未曾告之何解 情绪一塌糊涂 难上加难 前人栽树地 蜂拥而...

  • 其实没那么难

    有时候想的太多,很难迈出第一步。心中总会有很烦的事情,不想做的事情。越是有这样的心态,越会把这个事情从脑海里无限扩...

  • 其实没那么难

    学员说,她想在朋友圈开启副业,但是她心理上有卡点,怕自己写的不够好,没人点赞、评论,担心别人对她的看法… 所以,副...

  • 其实没那么难

    生在一个复杂的社会,不应该让自己的思想太复杂。只有让自己变得简单,才能够很好的驾驭生活。走了很多弯路后,生活真实地...

  • 其实没那么难

    有些时候, 总觉得有些事情, 难于上青天, 其实都是, 懒惰性在作祟, 只有当自己, 没有了退路, 才会, 静下心...

  • 其实没那么难

    所有的纠结都在今天结束,其实做起来没那么难。 儿子昨晚还信誓旦旦地说明天去幼儿园,今早又说不去了,说好中午就接回来...

  • 其实没那么难

    第一次开车上路,一天竟跑了120多公里,我自己都不敢相信这是真的。 2014年6月拿的驾照,驾照拿到手后再也没有摸...

  • 其实没那么难

    做保险几年了,发现客户问的比较多的也就是那几个问题?比如:你到时候不做怎么办?在异地你们怎么处理,到时候找不到人?...

网友评论

    本文标题:堆排序其实没那么难

    本文链接:https://www.haomeiwen.com/subject/bzjsnctx.html