这里只谈理论不谈具体代码实现
堆排序是一种选择排序,关键是筛选。进行堆排序要先了解怎么建立堆在连接堆调整。堆又分为大根堆和小根堆,这里以小根堆为例。小根堆的每一个节点都要小于它的两个左右子树的根节点。
建立堆:先按照所给序列(从上到下从左到右)进行初始化成一个完全二叉树,然后从最后一个非叶子结点开始调整

  1. 调整从第n/2个元素开始,将以该元素为根的二叉树调整为堆
  2. 将以序号为n/2-1的节点为根的二叉树调整为堆
  3. 再将以序号为n/2-2的节点为根的二叉树调整为根
  4. 再以序号为n/2-3的节点为根的二叉树调整为堆
    *(这里最后一步应该是n/2-1) *
    数据结构与算法理论篇--堆排序
    堆调整:调整有可以调整为
  5. 输出堆顶元素之后,以堆中最后一个元素替代之;
  6. 然后将根 节点值与左右子树的根节点进行比较,并与其中小者进行交换
  7. 重复上述操作,直至叶子结点,将新得到的对,称这个对顶至叶子的调整过程称为筛选。大根堆思路一样
    数据结构与算法理论篇--堆排序这样一步一步就完成了排序!

相关文章:

  • 2022-12-23
  • 2021-10-04
  • 2021-12-23
  • 2022-12-23
  • 2021-12-17
  • 2021-05-31
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-18
  • 2022-01-10
  • 2021-12-26
  • 2021-10-25
  • 2021-06-06
  • 2022-02-08
  • 2022-12-23
相关资源
相似解决方案