【算法三】簡單選擇

基本思路

基本原理如下:對於給定的一組記錄,經過第一輪比較後得到最小的記錄,然後將該記錄的位置與第一個記錄的位置交換;接着對不包括第一個記錄以外的其他記錄進行第二次比較,得到最小記錄並與第二個位置記錄交換;重複該過程,直到進行比較的記錄只剩下一個爲止。

代碼實現

  1. 確定要插入最小值的位置,從0開始到最後int i = 0; i <len ; i++
  2. 將每次開始位置上的數字暫定爲最小值min,從開始數字之後一個個和min比較,再把最小值存放到min
  3. 將最小值所在位置上的數字和開始位置上的數字交換
public static void selectSort(int[] array) {
    int len = array.length;
    //確定每次開始的位置
    for (int i = 0; i < len; i++) {
        //設定開始數字爲最小的值最小值
        int min = array[i];
        int flag = i;
        //把最小值存放到min,從開始數字向後一個個和min比較,再把最小值存放到min
        for (int j = i + 1; j < len; j++) {
            if (min > array[j]) {
                min = array[j];
                flag = j;
            }
        }
        if (flag != i) {
            array[flag] = array[i];
            array[i] = min;
        }
    }
    System.out.println(Arrays.toString(array));
}

時間複雜度和空間複雜度

簡單選擇排序的時間複雜度爲O(n²)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章