首頁 >常見問題 >堆排序是穩定的嗎

堆排序是穩定的嗎

尚
原創
2020-04-22 11:27:5218865瀏覽

堆排序是穩定的嗎

堆排序、快速排序、希爾排序、直接選擇排序是不穩定的排序演算法,而基數排序、冒泡排序、直接插入排序、折半插入排序、歸併排序是穩定的排序演算法。

堆排序

我們知道堆的結構是節點i的孩子為2*i和2*i 1節點,大頂堆要求父節點大於等於其2個子節點,小頂堆要求父節點小於等於其2個子節點。

在一個長為n 的序列,堆排序的過程是從第n/2開始和其子節點共3個值選擇最大(大頂堆)或最小(小頂堆),這3個元素之間的選擇當然不會破壞穩定性。但當為n /2-1, n/2-2, ...1這些個父節點選擇元素時,就會破壞穩定性。

有可能第n/2個父節點交換把後面一個元素交換過去了,而第n/2-1個父節點把後面一個相同的元素沒有交換,那麼這2個相同的元素之間的穩定性就被破壞了。所以,堆排序不是穩定的排序演算法。

以上是堆排序是穩定的嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn