首页 / 时尚 / 时装 / 正文

堆排序(五分钟看懂一个高难度的排序:堆排序)

放大字体  缩小字体 来源:芦根的作用 2026-06-06 08:49  浏览次数:98

五分钟看懂一个高难度的排序:堆排序

堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。

小顶堆

五分钟看懂一个高难度的排序:堆排序nerror="javascript:errorimg.call(this);">

堆排序(Heapsort)是指利用堆这种数据结构(后面的【图解数据结构】内容会讲解分析)所设计的一种排序算法。堆积是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序可以说是一种利用堆的概念来排序的选择排序。分为两种方法:

  • 大顶堆:每个节点的值都大于或等于其子节点的值,在堆排序算法中用于升序排列;
  • 小顶堆:每个节点的值都小于或等于其子节点的值,在堆排序算法中用于降序排列;

算法步骤

  1. 创建一个堆 H[0……n-1];
  2. 把堆首(最大值)和堆尾互换;
  3. 把堆的尺寸缩小 1,并调用 shift_down(0),目的是把新的数组顶端数据调整到相应位置;
  4. 重复步骤 2,直到堆的尺寸为 1。

算法演示

五分钟看懂一个高难度的排序:堆排序nerror="javascript:errorimg.call(this);">

代码实现

Go代码实现

五分钟看懂一个高难度的排序:堆排序nerror="javascript:errorimg.call(this);">

Python代码实现

五分钟看懂一个高难度的排序:堆排序nerror="javascript:errorimg.call(this);">

如果你是iOS开发者,可以在GitHub上 github.com/MisterBooo/… 获取更直观可调试运行的源码。

你可以在参考文献:K码农-http://kmanong.top/kmn/qxw/form/home?top_cate=28

打赏
0相关评论
热门搜索排行
精彩图片
友情链接
声明:本站信息均由用户注册后自行发布,本站不承担任何法律责任。如有侵权请告知立立即做删除处理。
违法不良信息举报邮箱:115904045
头条快讯网 版权所有
中国互联网举报中心