排序(五)選擇排序
阿新 • • 發佈:2018-01-12
單選 auto .com spl left 有關 img 時間復雜度 空間
參考文檔:
原理:
對於給定的一組記錄,經過第一輪比較後得到最小的記錄,然後將該記錄與第一個記錄的位置進行交換;接著對不包括第一個記錄以外的其他記錄進行第二輪比較,得到最小的記錄並與第二個記錄進行位置交換;重復該過程,直到進行比較的記錄只有一個時為止
代碼實現:
public static void selectSort(int[] num) { for(int i=0;i<num.length;i++){ int k=i; for(int j=num.length-1;j>i;j--){if(num[j]<num[k]){ k=j; } } if(k!=i){ swap(num, i, k); } } } public static void swap(int []arr,int a ,int b){ int temp=arr[a]; arr[a] = arr[b]; arr[b] = temp; }
算法分析:
- 時間復雜度:O(N2)
簡單選擇排序的比較次數與序列的初始排序無關。 假設待排序的序列有 N 個元素,則比較次數總是N (N - 1) / 2
而移動次數與序列的初始排序有關。當序列正序時,移動次數最少,為 0
當序列反序時,移動次數最多,為3N (N - 1) / 2
所以,綜合以上,簡單排序的時間復雜度為 O(N2)
- 空間復雜度:O(1)
- 穩定性:不穩定
排序(五)選擇排序