插入排序將陣列分為已排序與未排序兩部分,每次從未排序取出元素,插入已排序區間的正確位置。時間複雜度 O(n²),最好情況 O(n) (已排序),穩定排序,原地排序。
using System;
public class InsertionSorter
{
public void Sort(int[] list)
{
for (int i = 1; i < list.Length; i++)
{
int temp = list[i];
int j = i;
while (j > 0 && list[j - 1] > temp)
{
list[j] = list[j - 1];
j--;
}
list[j] = temp;
}
}
}
// 測試
public class Program
{
public static void Main()
{
int[] arr = { 1, 13, 3, 6, 10, 55, 98, 2, 87, 12, 34, 75, 33, 47 };
new InsertionSorter().Sort(arr);
Console.WriteLine(string.Join(" ", arr));
}
}