1. 程式人生 > 其它 >基本排序演算法原理和優化

基本排序演算法原理和優化

(原創)

本文討論基本排序演算法的原理和優化

1.插入排序(insertion sort)
新元素,插入到已排好序的序列中去,得到新的有序列

2.選擇排序(selection sort)
每輪選最值

3.歸併排序 merge sort
分為兩個過程
(1)不斷分割,直至單元素
(2)合併兩個有序列的方法
先不斷分割,再用合併的方法不斷合併

4.堆排序 heap sort
(1)建樹,且是max-heap,父節點>=子節點
(2)root和尾節點交換,root節點值歸入有序組
(3)尾結點交換到root後的新樹,再進行heapify得到新max-heap
(4)重複(2)

5.希爾排序 shell sort
插入排序的改進,
每次對隔gap的元素(list[i] 和 list[i+gap])比較大小, 使隔gap的子序列是有序的。
不斷二分gap至1,重複上面過程

6.氣泡排序
每趟相鄰兩元素比較,交換出最大值到最右。

7.快速排序
(1)基本原理
選一箇中介,調整數列,使中介左邊部分小於中介,右邊部分大於等於中介
再對左右兩部分遞迴

(2)工業優化要點

* 各函式(整數操作,指標操作,控制流,比較函式,交換函式)的耗時分析
* 雙向由兩個指標來遍歷,而不是用一個指標單向遍歷,減少交換次數
* 選取中介值的取樣,儘可能的做到分割的數量差不多
* 相同元素很多的情況考慮,三段分法
* 小陣列(小於20)直接用插入排序
* 多執行緒技術