直接插入排序(Straight Insertion Sort)是一種簡單直觀的排序算法,其基本操作是將一個記錄插入到已經排好序的有序表中,從而得到一個新的、記錄數增1的有序表。整個排序過程需要進行n-1趟插入,第一趟比較前兩個數,然後把第二個數按大小插入到有序表中;第二趟把第三個數據與前兩個數從後向前掃描,把第三個數按大小插入到有序表中;依次進行下去,進行了(n-1)趟掃描以後就完成了整個排序過程。
直接插入排序的時間複雜度分析如下:
最好情況時間複雜度:當數組完全順序時,即每個待插入元素都恰好不小於前面有序表中的最後一個元素,直接插入排序的時間複雜度為O(n)。
最壞情況時間複雜度:當數組完全逆序時,即每個待插入元素都比前面有序表中的元素大,直接插入排序的時間複雜度為O(n²)。
空間複雜度:直接插入排序的空間複雜度為O(1)。
直接插入排序的穩定性取決於輸入序列的初始狀態。如果輸入序列已經部分有序,那麼直接插入排序的平均時間複雜度將接近其最好情況時間複雜度。反之,如果輸入序列完全逆序,那麼其平均時間複雜度將接近其最壞情況時間複雜度。因此,直接插入排序在實際套用中的性能可能因輸入序列的不同而有很大差異。