2019 september 07
排序演算法對比
排序演算法
平均時間複雜度
最好情況
最壞情況
空間複雜度
原址排序
比較排序
穩定插入排序
$\theta \left( n^ \right)$
$\theta \left( n \right)$
$\theta \left( n^ \right)$
$\mathbf \left( 1 \right)$是是
是歸併排序
$\theta \left( n \lg n \right)$
$\theta \left( n \lg n \right)$
$\theta \left( n \lg n \right)$
$\mathbf \left( n \right)$否是
是堆排序
$\mathbf \left( n \lg n \right)$
$\mathbf \left( n \lg n \right)$
$\mathbf \left( n \lg n \right)$
$\mathbf \left( 1 \right)$是是
否快速排序
$\theta\left( n \lg n \right)$
$\theta\left( n \lg n \right)$
$\theta \left( n^ \right)$
$\mathbf \left( \lg n \right)$是是
否計數排序
$\theta \left( n + k \right)$
$\theta \left( n + k \right)$
$\theta \left( n + k \right)$
$\mathbf \left( k \right)$否否
是基數排序
$\theta \left( d \left( n + k \right) \right)$
$\theta \left( d \left( n + k \right) \right)$
$\theta \left( d \left( n + k \right) \right)$
$\mathbf \left( n + k \right)$否否
是桶排序
$\theta \left( n + k \right)$
$\theta \left( n + k \right)$
$\theta\left( n^ \right)$
$\mathbf \left( n + k \right)$否否
是穩定:如果 a 原本在 b 前面,而 a=b,排序之後 a 仍然在 b 的前面;
鍊錶:最壞情況下的僅僅執行時間
unsorted, singly linked
sorted, singly linked
unsorted, doubly linked
sorted, doubly linked
$\text$
$\theta(n)$
$\theta(n)$
$\theta(n)$
$\theta(n)$
$\text$
$\theta(1)$
$\theta(n)$
$\theta(1)$
$\theta(n)$
$\text$
$\theta(n)$
$\theta(n)$
$\theta(1)$
$\theta(1)$
$\text$
$\theta(n)$
$\theta(1)$
$\theta(n)$
$\theta(1)$
$\text$
$\theta(n)$
$\theta(n)$
$\theta(n)$
$\theta(1)$
$\text$
$\theta(n)$
$\theta(1)$
$\theta(n)$
$\theta(1)$
$\text$
$\theta(n)$
$\theta(n)$
$\theta(n)$
$\theta(n)$
排序演算法對比
1 快速排序 quicksort 快速排序是乙個就地排序,分而治之,大規模遞迴的演算法。從本質上來說,它是歸併排序的就地版本。快速排序可以由下面四步組成。1 如果不多於1個資料,直接返回。2 一般選擇序列最左邊的值作為支點資料。3 將序列分成2部分,一部分都大於支點資料,另外一部分都小於支點資料。4...
各排序演算法對比
比較名稱 時間複雜度 空間複雜度 是否穩定 是否與序列初始狀態有關 適用情況 儲存結構 備註直接插入排序 最好o n 平均o n 2 最壞o n 2 o 1 是是 n較小 小於等於50 初始狀態基本有序,順序儲存 鏈式儲存 折半插入排序 o n 2 o 1 是比較次數無關 移動次數有關 順序儲存 僅...
常用排序演算法對比
排序方法 時間複雜度 平均 時間複雜度 最壞 時間複雜度 最好 空間複雜度 穩定性 比較次數 最壞 比較次數 最好 氣泡排序 o n2 o n2 o n o 1 穩定n n 1 2 n 1選擇排序 o n2 o n2 o n2 o 1 不穩定n n 1 2 插入排序 o n2 o n2 o n o ...