1. 程式人生 > >c#程式碼實現排序演算法之插入排序

c#程式碼實現排序演算法之插入排序

插入排序的平均時間複雜度為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;
                    }
                }
            }
        }