算法导论-排序和顺序统计量-堆排序(缺代码)

堆排序

(二叉)堆是一个数组,它可以被看成一个近似的完全二叉树。树上的每一个结点对应数组中的一个元素。除了最底层外,该树是完全充满的,而且是从左像右填充。

在堆排序中,我们使用的是最大堆。最小堆通常用于构造优先队列。

在最大堆中,最大堆性质是指除了根以外的所有结点i都要满足:A[Panrent(i)]≥a[i],也就是说,某个结点的值至多与其父结点一样大。堆中的最大元素存放在根结点中。

把堆看成一棵树,一个堆中的结点的高度就为该结点到叶结点最长简单路径上边的数目。

优先队列是一种用来维护一组元素构成的集合S的数据结构,其中的每一个元素都有一个相关的值,称为关键字(key)。一个最大优先队列支持以下操作:
Insert(S,x):把元素x插入集合S中。这一操作等价于S=S∪{x}。
Maximum(S):返回S中具有最大键字的元素。
Extract-Max(S):去掉并返回S中的具有最大键字的元素。
Increase-Key(S,x,k):将元素x的关键字值增加到k,k的值不小于x的原关键字。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 0.目录 1.优先队列ADT 2.几种实现 3.二叉堆 4.d-堆 5.左式堆 6.斜堆 7.二项队列 8.斐波那...
    王侦阅读 8,406评论 1 2
  • 课程介绍 先修课:概率统计,程序设计实习,集合论与图论 后续课:算法分析与设计,编译原理,操作系统,数据库概论,人...
    ShellyWhen阅读 6,895评论 0 3
  • 本文涉及更多的是概念,代码部分请参考之前写过的 2 篇博客 基于Javascript的排序算法基本数据结构和查找算...
    faremax阅读 5,098评论 0 2
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,084评论 0 15
  • 人生最惬意 141的后座 打开窗 环陵路的风 闭上眼睛 拂面而来
    小暖之旅阅读 1,228评论 0 0