显示heapsort重复比较

时间:2016-03-17 06:31:18

标签: algorithm sorting heap heapsort

如何证明heapsort重复之前所做的比较? (即它会执行先前已完成的比较) 感谢

1 个答案:

答案 0 :(得分:1)

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

例如,按max-heap排序:

  • origin array:4 6 10 7 3 8 5
  • heapifyshift-up的新堆数组 比较:4< 6,6< 10,4< 7,6< 8< 6> (10)(7 8)(4 3 6 5)//每个层按括号分组
  • 重新订购步骤
    • 将第一个与最后一个交换,将大一个交换到最后
    • 将堆大小减少1
    • 使用shift-down
      比较:5&lt; 8,6 <7,3&lt; 6,3&lt; 4&lt; 3&lt; 5&lt; 3&lt; 4&lt; 4&lt; 4&gt;

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