美文网首页
堆排序笔记

堆排序笔记

作者: 柴柴总 | 来源:发表于2020-08-18 00:19 被阅读0次
  • 堆排序是一种不稳定的排序算法,平均时间复杂度为O(nlogn)

  • 堆的定义:完全二叉树,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。升序用大顶堆,降序用小顶堆(因为以大顶堆为例把根节点的和最后一个元素(也可以说最后一个节点)交换位置,那么末尾元素此时就是最大元素了)

  • 堆排序的整个算法都是围绕着堆的定义进行的,每一步都在维持其满足堆的定义,思路如下

    1. 将打乱的序列自底向上调整为满足堆的定义
    2. 将堆顶元素与末尾元素互换(此时的二叉树不包括末尾元素),自顶向下调整直至满足堆的定义,重复2过程就能得到排好序的序列
  • 堆可以按照层次遍历的顺序映射到一个一维数组

参考资料
详细图解堆排序 https://www.cnblogs.com/chengxiao/p/6129630.html
例题:数据流中的中位数,最大堆最小堆解法https://www.cnblogs.com/gzshan/p/10904254.html

相关文章

  • 堆排序笔记

    堆排序是一种不稳定的排序算法,平均时间复杂度为O(nlogn) 堆的定义:完全二叉树,每个结点的值都大于或等于其左...

  • 堆排序

    目录 1.堆排序介绍 2.堆排序图文说明 3.堆排序的时间复杂度和稳定性 4.堆排序实现 堆排序介绍 堆排序(He...

  • 堆排序---基础篇

    本文主要介绍堆排序的一些基本过程和分析。 大纲 堆排序简介 堆排序代码实现 1. 堆排序简介 1.1 堆排序的存储...

  • 堆和堆排序

    最小K个数 堆排序 堆排序

  • JS实现堆排序

    原理 堆排序原理 实现 说明 堆排序对大文件很有效 堆排序是不稳定排序

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • 堆排序

    转载:图解排序算法(三)之堆排序 预备知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选...

  • 排序

    原创 堆排序: 使用visit数组从本质出发获取大顶堆排序。

  • 堆排序

    堆排序

  • C++基础入门之模板堆排序(上):模板上的list的创造与操作

    整段源码链接C++的模板元堆排序 要点 组建数据结构list 组建对list的各种基本操作 堆排序中组建堆排序个个...

网友评论

      本文标题:堆排序笔记

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