選擇排序思想跟插入排序很像,也將陣列分為未排序區間和已排序區間。不同的是,選擇排序是將未排序區間中選擇乙個最小值放在已排序區間的後邊。跟插入排序不同,不需要不停往後移動資料,選擇排序直接替換最小值到指定位置即可。
**也很簡單:
/**
* 選擇排序
* @param a
* @param n
*/public static void selectionsort(int a, int n)
for (int i = 0; i < n - 1; ++i)
}// 交換
int tmp = a[i];
a[i] = a[minindex];
a[minindex] = tmp;}}
選擇排序不需要額外的儲存空間,空間複雜度為o(1),所以是原地排序演算法。
不穩定,比如[5,8,5,2,9]這個陣列,使用選擇排序演算法第一次找到的最小元素就是2,與第乙個位置的元素5交換位置,那第乙個5和中間的5的順序就變數,所以就不穩定了。所以選擇排序演算法 比起插入排序和氣泡排序還是稍微遜色。
最好、最差、平均時間複雜度都是o(n^2),因為無論你是否完全有序,還是完全逆序,都需要找出後邊的最小值進行替換。
O N 時間複雜度的排序演算法 計數排序
比較排序中,氣泡排序,插入排序,堆排序,歸併排序,快速排序等都比較常見。其中快速排序的平均效能是最好的時間複雜度為n lgn 已經有證明 任意乙個比較演算法的在最壞的情況下,都需要做 n lgn 次比較。還有一種很有趣的排序演算法可以在o n 時間內完成特定序列的排序,那就是計數排序。特定條件所有整...
js排序的時間複雜度 各種排序演算法時間複雜度
各種排序演算法比較 各種常用排序演算法 類別排序方法 時間複雜度 空間複雜度 穩定性複雜性 特點最好 平均最壞 輔助儲存 簡單插入 排序直接插入 o n o n2 o n2 o 1 穩定簡單 希爾排序 o n o n1.3 o n2 o 1 不穩定複雜 選擇排序 直接選擇 o n o n2 o n2...
排序演算法 時間複雜度和空間複雜度
常數階o 1 無論 執行了多少行,只要沒有迴圈複雜結構,那麼這個的時間複雜度就是o 1 o 1 時間複雜度 沒有迴圈結構的順序執行,無論執行多少行,時間複雜度均為o 1 public static voido1 對數階o log2n o log2n 時間複雜度 此處 i 以二倍的速度增長,也就是說到...