插入排序法(Insertion Sort)

← 回到首頁

插入排序法原理

插入排序法是一種基於比較的排序演算法。它透過構建一個已排序的序列,然後逐個將未排序的元素插入到已排序序列的適當位置,直到整個序列有序為止。

操作步驟

  1. 從第二個元素開始,將其視為待插入的元素。
  2. 在已排序的序列中從右到左掃描,找到合適的位置。
  3. 將待插入元素移動到該位置(其他元素向右移動)。
  4. 重複上述步驟,直到所有元素都被處理。

時間與空間複雜度

項目 複雜度 說明
最壞時間複雜度 O(n²) 陣列完全反向排序時
平均時間複雜度 O(n²) 隨機排序的情況
最佳時間複雜度 O(n) 陣列已排序時
空間複雜度 O(1) 只需常數大小的額外空間

插入排序法演算法代碼

function insertionSort(arr) { const n = arr.length; for (let i = 1; i < n; i++) { const key = arr[i]; let j = i - 1; // 在已排序的部分中找到正確位置 while (j >= 0 && arr[j] > key) { arr[j + 1] = arr[j]; j--; } // 將 key 插入到正確位置 arr[j + 1] = key; } return arr; }

排序動畫演示

600ms
比較次數 0
移動次數 0
已完成輪數 0
陣列大小 8