1. 程式人生 > >簡單選擇排序演算法JAVA實現

簡單選擇排序演算法JAVA實現

簡單選擇排序的過程為:第1次,從n個記錄中找出關鍵碼最小的記錄與第1個記錄交換,第2次,,從第2個記錄開始的n-1個記錄中再選出關鍵碼最小的記錄與第2個記錄交換;如此,第i次,則從第i個記錄開始的n-i+1個記錄中選出關鍵碼最小的記錄與第i個記錄交換,直到整個序列按關鍵碼有序。

例:3,1,4,2

第1次·:13,4,2

第2次:1,2,4,3

第3次:1,2,34

 

  • 時間複雜度: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));
	}
}

執行結果