时间: 2020-08-30|75次围观|0 条评论

  • 堆排序是一种不稳定的排序算法,平均时间复杂度为O(nlogn)

  • 堆的定义:完全二叉树,每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。升序用大顶堆,降序用小顶堆

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

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

参考资料
详细图解堆排序 https://www.cnblogs.com/chengxiao/p/6129630.html

文章转载于:https://www.jianshu.com/p/0dcb894ccccd

原著是一个有趣的人,若有侵权,请通知删除

本博客所有文章如无特别注明均为原创。
复制或转载请以超链接形式注明转自起风了,原文地址《堆排序笔记
   

还没有人抢沙发呢~