(2)排序算法-選擇

下圖為選擇排序動態圖,每一次遍歷選擇當前最小的元素放到對應的位置。

(2)排序算法-選擇

1)基本原理:

遍歷整個隊列,依次找出當前剩餘隊列中的最小值,選擇即選擇當前剩餘無序隊列中的最小值。

2)核心代碼:

public static void selectionSort(int[] a, int n) {

// 排序趟數,最後一個元素是最大的不用比較所以是 (n-1) 趟

for (int i = 0; i < n-1; i++) {

int minIndex = i; // 無序列表中最小元素的下標

for (int j = i+1; j < n; j++) {

// 在無序列表中查找最小元素的小標並記錄

if (a[j] < a[minIndex]) {

minIndex = j;

}

}// 將最小元素交換到本次循環的前端

int tmp = a[minIndex];

a[minIndex] = a[i];

a[i] = tmp;

}

}

3)特點:

平均時間複雜度是 O(n^2),最佳和最差情況也是一樣

空間複雜度 O(1)

不穩定的排序算法(相等元素的前後順序排序後可能改變)


分享到:


相關文章: