2011-11-17 21 views

回答

5

當所有元素相等時,構建堆佔用O(n)個步驟。因爲當一個比較O(1)後元素被添加到堆中時,我們看到它處於正確的位置。

刪除根目錄也是O(1),當我們交換尾部和根目錄時,heap屬性仍然滿足。

所有元素都被添加到O(n)中的堆中,並在O(n)中被刪除。所以,在這個的情況下,heapsort是O(n)。我想不出一個更好的情況,所以heapsorts最好的情況必須是O(n)。

'heapsorts best case is O(n)'意思是英文的意思是:存在大小爲n的數組,使得heapsort至多需要對k * n進行排序。這在理論上很好,但在實踐中,它並沒有多說好多快或多快。

+0

謝謝.. Ishtar – rakesh

+0

這是不正確的!請參閱http://stackoverflow.com/questions/4589988/lower-bound-on-heapsort – Cheng

+0

@Cheng,這個問題是關於**最好的情況下,你鏈接的問題是關於**最糟糕的情況。正如我指出的那樣,最好的情況並不是真正的相關。如果你有如何改進我的答案的建議,請讓我知道。 – Ishtar

相關問題