堆排序

因为排序是log(n)级别
因此堆一定是一个树形结构:二叉堆

这个二叉树的特点:

  • 父亲结点总是 > 子结点
image.png
  • 二叉堆必须是一个完全二叉树。完全二叉树指该二叉树除了最后一层外,其他层的结点个数必须是最大值,且最后一层子节点必须全部集中在左侧。
image.png

注意:这样的堆称为“最大堆”,因为最上面的根结点一定是最大的值。如果我们要构建最小堆,则只需要保证根节点总是小于子节点。

给二叉堆每个结点标上序列号

image.png

我们可以轻易得出

  • 每个结点的左子结点的序列号一定是该结点的两倍
  • 每个结点的右子结点的序列号一定是该结点的两倍 + 1

注意:不使用数组第0号位存储

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

推荐阅读更多精彩内容

  • 关于最大堆 什么是最大堆和最小堆?最大(小)堆是指在树中,存在一个结点而且该结点有儿子结点,该结点的data域值都...
    凌云壮志几多愁阅读 88,715评论 33 71
  • 二叉树 满二叉树 国内教程定义:一个二叉树,如果每一个层的结点数都达到最大值,则这个二叉树就是满二叉树。也就是说,...
    简_爱SimpleLove阅读 9,742评论 0 3
  • 堆排序可以做什么 首先应该弄清楚堆排序可以解决什么问题,答案是显而易见的:排序。说得通俗点儿就是对一组无序的数字进...
    Springlord888阅读 30,485评论 11 52
  • 上次写到了快排,接着往下讲。O(nlogn)级别的算法除了上次说的快排,归并,还有推排序。今天从先推排序开始写。堆...
    锅与盆阅读 6,323评论 0 2
  • 与简单选择排序的关系 简单选择排序过程有这个问题:在待排序的n个记录中选择一个最小的记录需要比较n-1次。这样的操...
    官先生Y阅读 3,544评论 0 1