algorithm - 显示堆排序重复比较

标签 algorithm sorting heap heapsort

如何证明堆排序重复了它之前所做的比较? (即它会执行之前已经完成的比较) 谢谢

最佳答案

这两个元素可能在构建堆步骤(heapify)中进行比较,也可能在堆排序中的重新排序步骤中进行比较。这是 the wiki .

例如,按最大堆排序:

  • 原始数组:4 6 10 7 3 8 5
  • heapify 通过 shift-up 到一个新的堆数组。
    比较:4<6、6<10、4<7、6<8 (10) (7 8) (4 3 6 5)//每层用括号分组
  • 重新排序步骤
    • 先大后小,大的放在最后
    • 将堆大小减少 1
    • 使用下移
      比较:5<8, 6<7, 3<6, 3<4, 3<5, 3<4

因为,在heapify 中,比较基于元素的顺序。而在 heapify 之后,顺序可能也没有排序。所以可能还有其他比较。

关于algorithm - 显示堆排序重复比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36053163/

相关文章:

algorithm - 这个排序算法的名称是什么?

json - Python 3 json.load() 以错误的顺序读取 JSON 文件

二叉堆的 C++ 实现

java - 创建对象和值之间映射的最小堆

php - 在数组中找到最大总和

algorithm - 支持记分牌最佳操作的数据结构

c++ - 排序 QMap<QString, int>

c++ - 使用堆的优先级队列

algorithm - 0 1 矩阵平衡

algorithm - 如果基数尝试(或者说 HAT 尝试)非常适合存储和管理字符串,为什么它们不能同样用于整数?