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,堆一旦建好,就可以进行排序了: