算法描述:對於給定的一組記錄,經過第一輪比較后得到最小的記錄,然后將該記錄與第一個記錄的位置進行交換;接着對不包括第一個記錄以外的其他記錄進行第二輪比較,得到最小的記錄並與第二個記錄進行位置交換;重復該過程,直到進行比較的記錄只有一個時為止。
package sorting; /** * 選擇排序 * 平均O(n^2),最好O(n^2),最壞O(n^2);空間復雜度O(1);不穩定;簡單 * @author zeng * */ public class SelectionSort { public static void selectionSort(int[] a) { int n = a.length; for (int i = 0; i < n; i++) { int k = i; // 找出最小值的下標 for (int j = i + 1; j < n; j++) { if (a[j] < a[k]) { k = j; } } // 將最小值放到未排序記錄的第一個位置 if (k > i) { int tmp = a[i]; a[i] = a[k]; a[k] = tmp; } } } public static void main(String[] args) { int[] b = { 49, 38, 65, 97, 76, 13, 27, 50 }; selectionSort(b); for (int i : b) System.out.print(i + " "); } }