【发布时间】:2013-07-17 00:17:57
【问题描述】:
在阅读“算法简介”时,我想知道为什么 HEAPSORT 需要时间 O(nlgn),而 BUILD-MAX-HEAP 需要时间 O(n)。
HEAPSORT 从 A.length 开始它的 for 循环直到 2,调用 MAX-HEAPIFY。
BUILD-MAX-HEAP 在 A.length/2 到 1 的底部开始其 for 循环,调用 MAX-HEAPIFY。
MAX-HEAPIFY 需要时间 O(lgn)。我想知道是什么导致BUILD-MAX-HEAP 比HEAPSORT 更快。
【问题讨论】:
-
请参阅Wikipedia 以证明为什么堆化是 O(n)。
-
Heapsort 基本上以 MAX-HEAPIFY yes 开头(尽管有时表述方式可能略有不同),但是,heapsort 然后继续从堆中删除每个元素。正是这个额外的步骤使它成为 O(n log n) 而不仅仅是 O(n)。
标签: performance algorithm sorting time heap