資料結構&演算法實踐—堆排序

wklken發表於2015-12-24

排序>>選擇排序>>堆排序

List:

  1. start

基本概念:

維基百科http://zh.wikipedia.org/zh-cn/%E5%A0%86%E7%A9%8D%E6%8E%92%E5%BA%8F

堆為一棵完全二叉樹,每個節點值都>=子節點值

堆排序根據這個特性,首先將所有元素建立堆,然後一個個取出,即有序的

堆中每個節點的位置:

最大堆主要操作邏輯:

插入:將新元素加入完全二叉樹最後一個節點,依次往上,調整直到滿足父節點值都>=子節點值

刪除:移除根節點,將最後一個節點拿到根節點,依次往下,調整

原始:

heap1

插入操作:12,先假定放在最後一個位置,然後從這個節點開始往上,同父節點比較,依次調整

heap2

刪除:取走11,將最後一個元素8移到根節點,從上往下,重新調整

heap3

  1. start

根據公式,我們可以使用陣列模擬實現完全二叉樹(不使用首個位置)

首先,我們先實現堆:

然後,實現排序過程:

  1. start

A.概念,過程描述?

B. 時間複雜度?空間複雜度?是否是穩定排序?

C.適用場景,何種情況下表現最優

打賞支援我寫出更多好文章,謝謝!

打賞作者

打賞支援我寫出更多好文章,謝謝!

任選一種支付方式

資料結構&演算法實踐—堆排序 資料結構&演算法實踐—堆排序

相關文章