🧩 插入排序法演示
操作原理
把陣列想成「左邊已排序,右邊未排序」。
每次從未排序區取出一個元素(key)。
將 key 與左邊已排序元素由右往左比較,找到正確插入位置。
比 key 大的元素向右移動一格,最後把 key 插入空位。
操作過程步驟
從 i = 1 開始,令 key = array[i]。
設 j = i - 1,向左比較 array[j] 與 key。
若 array[j] > key,將 array[j] 右移到 array[j + 1],j 持續左移。
直到 j < 0 或 array[j] <= key 為止。
把 key 放到 array[j + 1],完成一輪插入。
i 往右移動,重複到陣列尾端。
時間複雜度分析
最壞情況:O(n²)
當陣列為逆序時,每次插入都要一路比較與搬移到最前面
平均情況:O(n²)
隨機資料下,平均每輪仍需搬移一定數量元素
最佳情況:O(n)
當陣列已排序時,每輪只需一次比較就可完成插入
空間複雜度:O(1)
原地排序,額外只使用少量變數(key、j)
視覺化演示
按下「開始排序」觀察 key 如何插入左側已排序區
已排序區
當前 key
比較中
右移中
開始排序
重置
比較次數:
0
搬移次數:
0