前言

這篇文章將為排序篇章做一個結尾,文章會介紹選擇排序 (Selection Sort) 與插入排序 (Insertion Sort) 兩種排序法,透過上圖的排序法複雜度一覽表可以發現他們的執行效能相比其他排序法來的差一點,因此比較不常被使用,但要強調的是他們仍然有適合使用的情境,本篇文章將會簡單紀錄這兩個演算法的定義與程式碼實作

選擇排序法 (Selection Sort)

 

選擇排序法示意圖

簡單來說選擇排序法一直重複的做兩件事:

  1. 從尚未經過排序的陣列中找到最小值
  2. 將當前找到最小值擺到最左邊
時間複雜度 O(n²)

程式碼範例

這邊先設陣列的第一個數字是目前的最小值,然後往後把陣列的數值一個一個讀取,如果讀取的下個數比最小值大,就不作處理。而如果讀取到的數比目前的最小值小,就把目前的最小值換成這個數。重複這個方法把所有陣列裡的數都讀過一遍,就能確保目前的最小值為整個數列的最小值,扣除掉已經確定的最小值,剩下未確定的元素再重複執行以上步驟,直到陣列完成排序。

function selectionSort(array) {  const length = array.length;  for(let i = 0; i < length; i++){    // 將當前索引設為最小值    let min = i;    let temp = array[i];    for(let j = i+1; j < length; j++){      if (array[j] < array[min]){      // 找到比前一個最小值還小時設為新最小值        min = j;      }     }

Leave a Reply