【 聲明:版權所有,歡迎轉載,請勿用于商業用途。 聯系信箱:feixiaoxing @163.com】
堆排序是另外一種常用的遞歸排序。因為堆排序有着優秀的排序性能,是以在軟體設計中也經常使用。堆排序有着屬于自己的特殊性質,和二叉平衡樹基本是一緻的。打一個比方說,處于大堆中的每一個資料都必須滿足這樣一個特性:
(1)每一個array[n] 不小于array[2*n]
(2)每一個array[n]不小于array[2 * n + 1]
建構這樣一個堆隻是基礎,後面我們需要每次從堆的頂部拿掉一個資料,不斷調整堆,直到這個數組變成有序數組為主。是以詳細的堆排序算法應該是這樣的:
1)建構大堆,使得堆中的每一個資料都滿足上面提到的性質
2)将堆的第一個資料和堆的最後一個資料進行互換,然後重新調整堆,直到堆重新平衡為止
3)重複2)的過程,直到整個數組有序。
上面的描述過程很簡單,那麼實踐操作是怎麼樣的呢?
a)對入參進行判斷
b)建構大堆和調整大堆
c)建構大堆的細節操作部分
d)大堆疊代調整
e)對單分支節點和滿分支節點分别處理
f)堆排序算法介紹完畢,建立測試用例驗證
【預告: 下面的部落格介紹一些常用的資料結構】