簡單選擇排序演算法JAVA實現
阿新 • • 發佈:2018-12-25
簡單選擇排序的過程為:第1次,從n個記錄中找出關鍵碼最小的記錄與第1個記錄交換,第2次,,從第2個記錄開始的n-1個記錄中再選出關鍵碼最小的記錄與第2個記錄交換;如此,第i次,則從第i個記錄開始的n-i+1個記錄中選出關鍵碼最小的記錄與第i個記錄交換,直到整個序列按關鍵碼有序。
例:3,1,4,2
第1次·:1,3,4,2
第2次:1,2,4,3
第3次:1,2,3,4
- 時間複雜度:O(n2)
- 空間複雜度:O(1)
- 穩定性:不穩定
- 複雜性:簡單
public class SimpleSelectSort { public void selectionSort(int[] arr) { // 需要遍歷獲得最小值的次數 // 要注意一點,當要排序 N 個數,已經經過 N-1 次遍歷後,已經是有序數列 for (int i = 0; i < arr.length - 1; i++) { int min = i; // 用來儲存最小值得索引 // 尋找第i個小的數值 for (int j = i + 1; j < arr.length; j++) { if (arr[min] > arr[j]) min = j; } // 若min有變化,就將找到的第i個小的數值與第i個位置上的數值交換 if (min != i) { int temp = arr[min]; arr[min] = arr[i]; arr[i] = temp; } } } }
測試程式碼
public class Test { public static void main(String[] args) { int[] a = { 10, 7, 3, 5, 9, 1, 6, 8, 2, 4 }; System.out.println("排序前:" + Arrays.toString(a)); SimpleSelectSort simpleSelectSort = new SimpleSelectSort(); simpleSelectSort.selectionSort(a); System.out.println("簡單選擇排序後:" + Arrays.toString(a)); } }
執行結果