陣列和函式
阿新 • • 發佈:2021-11-24
(1)演算法的介紹
選擇排序(Selection-sort)是一種簡單直觀的排序演算法。它的工作原理:首先在給出的arr陣列中找到最小(大)元素,存放到arr陣列的起始位置,然後再從arr未排序的元素中繼續尋找最小(大)元素,然後放到arr第二個位置。以此類推,直到所有元素均排序完畢。
(2)演算法的原理
1、在 [L ... N-1] 範圍內找出最小專案 X 的位置,
2、用第 L 項與X項交換,
3、在 [L+1 ... N-1] 範圍重複步驟1和步驟2,直到 L = N-2。
(3)動態圖演示
(4)實現
public static void selectionSort(int[] arr) { // 1.引數判斷 if (arr == null || arr.length < 2) return; // 0 ~ N - 1 找到最小值,與 0 位置上數交換 // 1 ~ N - 1 找到最小值,與 1 位置上數交換 for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { // i ~ N-1上找到最小值的下標 minIndex = arr[minIndex] < arr[j] ? minIndex : j; } swap(arr, i, minIndex); } } public static void swap(int[] arr, int i, int j) { int temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; }
(5)演算法評估
- 時間複雜度:$O(N^2)$
- 空間複雜度:$O(1)$
程式碼地址:https://github.com/cosmos-lin/Algorithm2021/blob/master/src/sort_algorithm/SelectionSort.java