Author: bakari Date: 2012.7.30
排序算法有很多種,每一種在不同的情況下都占有一席之地。關于排序算法我分“經典排序之”系列分别述之。本篇為堆排序。
堆排序是運用二叉樹建立的一種排序方式,分為兩個階段,建堆和排序。
看建堆過程:
上面有一處小技巧, i 節點 的子孩子節點為 2 i + 1 和 2 i + 2;這個是建堆的關鍵,上面算法建立的是最大堆,當然也可以建立最小堆,方法類似。
OK,堆一旦建好,就可以進行排序了:
Author: bakari Date: 2012.7.30
排序算法有很多種,每一種在不同的情況下都占有一席之地。關于排序算法我分“經典排序之”系列分别述之。本篇為堆排序。
堆排序是運用二叉樹建立的一種排序方式,分為兩個階段,建堆和排序。
看建堆過程:
上面有一處小技巧, i 節點 的子孩子節點為 2 i + 1 和 2 i + 2;這個是建堆的關鍵,上面算法建立的是最大堆,當然也可以建立最小堆,方法類似。
OK,堆一旦建好,就可以進行排序了: