c#程式碼實現排序演算法之插入排序
阿新 • • 發佈:2018-11-08
插入排序的平均時間複雜度為O(n²),最好時間複雜度為O(n),最壞時間複雜度為O(n²),空間複雜度為O(1),是一種穩定的演算法。
1.將整個待排序的記錄序列劃分成有序區和無序區,初始時有序區為待排序記錄序列的第一個記錄,無序區包括所有剩餘待排序的記錄。
2.將無序區的第一個記錄插入到有序區的合適位置,從而使無序區減少一個記錄,有序區增加一個記錄。
3.重複執行2,直到無序區中沒有記錄為止。
插入排序採用減治法。
public static void insertSort(int[] list) { for (int i = 1; i < list.Length; i++) { int wait = list[i]; int j = i - 1; while (j >= 0 && list[j] > wait) { list[j + 1] = list[j]; j--; } list[j + 1] = wait; } }
public static void insertSort(int[] list) { for (int i = 1; i < list.Length; i++) { for (int j = i; j > 0; j--) { if (list[j] < list[j - 1]) { int temp = list[j]; list[j] = list[j - 1]; list[j - 1] = temp; } } } }