1. 程式人生 > >7種常見排序算法

7種常見排序算法

算法 元素 歸並排序 最後一個元素 中間 刪除 二叉 節點 個數

1. 冒泡排序
從第一個元素開始與右側元素兩兩比較並交換,直到右側成為有序部分。

2. 選擇排序
有序部分在左側,在剩余元素中找到最小的那個元素,並與剩余元素中第一個元素交換。

3. 插入排序
有序部分在左側,將剩余元素中第一個元素不斷向左交換,直到此元素處於有序部分恰當位置。

4. 希爾排序
取一個間隔值,距離為間隔值的元素為一組,將整個數組分為若幹組。每組內進行插入排序。縮小間隔值並重復,直到間隔值為1,即所有元素在同一組。

5. 歸並排序
分治。將數組分為兩半,通過遞歸調用將兩半分別排序,然後將有序的兩半進行二路歸並。

6. 快速排序
分治。隨意地選取第一個元素作為切分元素。左右指針向中間掃描,當左側掃描到大於等於切分元素的元素、右側掃描到小於等於切分元素的元素,交換。當左右指針重合時,將重合位置元素與切分元素交換,這樣切分元素就處於中間。遞歸調用,將左右部分分別排序。

7. 堆排序
二叉堆:父節點值大於等於兩個字節點值的完全二叉樹。
以第一個元素空置的數組表示時,位置為k節點的父節點位置為k/2,兩個字節點位置分別為2k和2k+1。
插入元素:將新元素添加到末尾,上浮此元素到合適位置。
刪除最大元素:刪除頂端元素,將最後一個元素放到頂端,下沈此元素到合適位置。
從N/2位置處由右至左下沈來構造有序堆。取堆頂元素為已排序部分,將末尾元素放至堆頂並下沈形成新有序堆。

7種常見排序算法