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 這樣,我們可以最後把整個數列割到最小兩個元素的子列,再使子列有序,從而整個數列都有序。值得注意的是,快排不會使某個...