1. 程式人生 > 其它 >[JS高程] 單例內建物件

[JS高程] 單例內建物件

(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