排序演算法學習之堆排序

2021-10-09 20:50:02 字數 851 閱讀 5891

堆排序(英語:heapsort

)是指利用

堆這種資料結構所設計的一種

排序演算法

。堆是乙個近似

完全二叉樹

的結構,並同時滿足堆積的性質:即子結點的鍵值或索引總是小於(或者大於)它的父節點。

簡單的就是將乙個陣列看作是乙個二叉樹,然後每個父節點跟自己的子節點比較

,最大的就成為父節點。如下圖

當第一輪對比完之後,二叉樹的根節點肯定是最大,然後將根節點和最後乙個節點交換,然後最後乙個節點就是最大的數,第二輪對比就是比對0至倒數第二個數。

由上排序的總規則就是:

排序第一輪,得出最大的數,

排序第二輪,得出第二大的數,

排序第三輪,得出第三大的數,

直到得出最小的數。完成排序。

**實現如下:

堆排序的遞迴方法:

每次的父節點和自己的子節點的對比並最大的數作為父節點的方法

演算法學習之 堆排序

1.堆是實現優先佇列的首選資料結構,最常見的是二叉堆。2.堆的性質 小頂堆 每乙個父節點的值總是不大於它的孩子節點的值。大頂堆 每乙個父節點的值總是不小於它的孩子節點的值。堆包含的操作有 insert 插入操作 extractmin 提取最小 用於小頂堆 exectractmax 提取最大 用於大頂...

演算法學習 堆排序

一 關於二叉樹和堆的基本概念 1 二叉樹 每個節點,最多有2個子樹的數結構。左右子樹,也是最多有2個子節點。2 滿二叉樹 除最後一層外,每個節點都有2個子節點。3 完全二叉樹 存在的節點,和滿二叉樹的節點完全對應。4 堆 max heap 最大的元素永遠在根節點 任一非終端節點資料均不小於其左 右孩...

經典演算法學習 堆排序

堆排序是相對其他排序稍微麻煩的排序,是一種利用堆的性質進行的選擇排序。堆其實是一棵完全二叉樹,只要任何乙個非葉節點的關鍵字不大於或者不小於其左右孩子節點,就可以形成堆。堆分為大頂堆和小頂堆。由上述性質可知大頂堆的堆頂的關鍵字是所有關鍵字中最大的,小頂堆的堆頂的關鍵字是所有關鍵字中最小的。堆排序同快速...