堆排序(英語:heapsort
)是指利用
堆這種資料結構所設計的一種
排序演算法
。堆是乙個近似
完全二叉樹
的結構,並同時滿足堆積的性質:即子結點的鍵值或索引總是小於(或者大於)它的父節點。
簡單的就是將乙個陣列看作是乙個二叉樹,然後每個父節點跟自己的子節點比較
,最大的就成為父節點。如下圖
當第一輪對比完之後,二叉樹的根節點肯定是最大,然後將根節點和最後乙個節點交換,然後最後乙個節點就是最大的數,第二輪對比就是比對0至倒數第二個數。
由上排序的總規則就是:
排序第一輪,得出最大的數,
排序第二輪,得出第二大的數,
排序第三輪,得出第三大的數,
直到得出最小的數。完成排序。
**實現如下:
堆排序的遞迴方法:
每次的父節點和自己的子節點的對比並最大的數作為父節點的方法
演算法學習之 堆排序
1.堆是實現優先佇列的首選資料結構,最常見的是二叉堆。2.堆的性質 小頂堆 每乙個父節點的值總是不大於它的孩子節點的值。大頂堆 每乙個父節點的值總是不小於它的孩子節點的值。堆包含的操作有 insert 插入操作 extractmin 提取最小 用於小頂堆 exectractmax 提取最大 用於大頂...
演算法學習 堆排序
一 關於二叉樹和堆的基本概念 1 二叉樹 每個節點,最多有2個子樹的數結構。左右子樹,也是最多有2個子節點。2 滿二叉樹 除最後一層外,每個節點都有2個子節點。3 完全二叉樹 存在的節點,和滿二叉樹的節點完全對應。4 堆 max heap 最大的元素永遠在根節點 任一非終端節點資料均不小於其左 右孩...
經典演算法學習 堆排序
堆排序是相對其他排序稍微麻煩的排序,是一種利用堆的性質進行的選擇排序。堆其實是一棵完全二叉樹,只要任何乙個非葉節點的關鍵字不大於或者不小於其左右孩子節點,就可以形成堆。堆分為大頂堆和小頂堆。由上述性質可知大頂堆的堆頂的關鍵字是所有關鍵字中最大的,小頂堆的堆頂的關鍵字是所有關鍵字中最小的。堆排序同快速...