深入理解排序演算法

2021-10-12 07:37:38 字數 1374 閱讀 8648

1.排序(sort)

2.演算法(algorithm)

3.常用排序演算法

術語解讀:

時間複雜度

執行演算法所需要的計算工作量(耗費的時間),一般來說,計算機演算法是問題規模n 的函式f(n),記做t(n)=ο(f(n))

氣泡排序:問題規模為n,需要比較n次,所以平均時間複雜度為o(n²)歸併排序:問題規模通過分治法消減為logn次,所以時間複雜度平均o(nlogn)

空間複雜度

指執行演算法所需要消耗的記憶體空間,其計算和表示方法與時間複雜度類似,一般都用複雜度的漸近性來表示

排序方式1

排序方式2

小結

比較排序適用大多數的場景。

非比較排序時間複雜度低,但由於非比較排序需要占用空間來確定唯一位置。所以對資料規模和資料分布有一定的要求。

穩定性

額外補充

正片開始:

[交換排序]氣泡排序(bubble sort)

[交換排序]快速排序(quick sort)

[插入排序]普通插入排序(insertion sort)

[插入排序]希爾排序(shell sort)

[選擇排序]簡單選擇排序(selection sort)

[非比較類排序]計數排序(counting sort)

未完待續,同步更新…

[選擇排序]堆排序(heap sort)

[歸併排序]二路歸併排序(merge sort)

[歸併排序]多路歸併排序(merge sort)

[非比較類排序]桶排序(bucket sort)

[非比較類排序]基數排序(radix sort)

深入理解各種排序演算法

hahah 1 插入排序 這種排序的方法是,舉個例子 陣列 3,2,5,4,8,7,1 這裡我們預設用的是從小到大的排序 1 此時陣列為 3,2,5,4,8,7,1 選出第二項 2 與第一項 3 比較,交換位置,陣列變成 2,3,5,4,8,7,1 此輪比較結束 2 此時陣列為 2,3,5,4,8,...

深入理解希爾排序

希爾排序是按照不同步長對元素進行分組插入排序的,當剛開始元素很無序的時候,步長最大,所以插入排序的元素個數很少,速度很快 當元素基本有序了,步長很小,插入排序對於有序的序列效率很高。所以,希爾排序的時間複雜度會優於o n 2 具體實現 如下,先看一種複雜一點的,但是便於理解的實現 for int i...

深入理解快速排序

快速排序分為兩部分 2,快排函式本身,通過遞迴呼叫自身,每次呼叫可以使乙個元素回歸正確的位置,並使該元素之前的元素都小於該元素,之後的元素都大於該元素 遞迴的退出條件是base top 這樣,我們可以最後把整個數列割到最小兩個元素的子列,再使子列有序,從而整個數列都有序。值得注意的是,快排不會使某個...