直接插入排序

2021-08-17 05:22:22 字數 1218 閱讀 4065

1.直接插入排序:一種比較簡單直觀的排序演算法,將待插入元素找到乙個合適的位置並插入到前面的有序序列中。具體實現方法為:每次先用乙個臨時變數把帶插入資料儲存起來,然後逐個與前面有序集合裡的元素進行比較,如果集合裡的元素大於待插入元素(假設我們要從小到大進行排序),就將它向後移動乙個單元,直到在有序集合裡找到小於等於待插入元素的數時就將待插入元素放在這個數後面。

這裡,我們依舊用畫圖的方法來更直觀的理解一下插入排序:

由圖中可以看出:每次排序都是將待排序元素插入到合適的位置並插入。所以我們可以這樣來用**實現插入排序,首先我把初始集合存放在乙個陣列中,然後用第一層for迴圈從前到後依次遍歷整個陣列,將元素乙個乙個插入到合適的位置,剛開始我們預設第乙個元素是有序的,所以我們從第二個元素開始遍歷陣列。

3.實現**如下:

void printsort(int arr,size_t size)

else

}arr[bound+1]=insertvalue;

printf("第%d次排序:",i);

printsort(arr,size); }}

int main()

; size_t size=sizeof(arr)/sizeof(arr[0]);

insertsort(arr,size);

system("pause");

return 0;

}

執行結果為:

4.演算法分析

時間複雜度:從前面的分析過程中可以看出,如果有n個數要進行排序,那麼至少需要進行n-1趟迴圈,那麼總共需要迴圈1+2+3+....+(n-1)=(n-1)/2次,所以插入排序的時間複雜度為o(n^2)。

空間複雜度:沒有額外的空間開銷,故空間複雜度為o(1),

穩定性:穩定,因為比較的時候,如果兩個數的大小相等,則不需要移動,相同數的前後次序不會發生改變。

如圖:

總結,在插入排序中,當元素個數非常少或者待排序區間基本有序的情況下,插入排序的·速度非常之快。詳情請見希爾(shell)排序。

直接插入排序

直接插入排序是一種最簡單的排序方法,它的基本思想是依次將每個記錄插入到乙個有序中去。就是說,第i i 1 遍整理時,a1,a2,ai 1已經是排好序的子串行 取出第i個元素ai,在已排好序的子串行為ai找到乙個合適的位置,並將它插到該位置上。易知上述排序當i 1時實際上為空操作,故可直接從i 2開始...

直接插入排序

直接插入排序的演算法思想 直接插入排序 straight insertion sort 的基本操作是將乙個記錄插入到已經排好序的有序表中,從而得到乙個新的 記錄數增 1 的有序表。根據該思想,編寫 如下 從已有序列的第0個記錄開始比較 public static void insertsort1 i...

直接插入排序

源文章url http student.zjzk.cn course ware data structure web paixu paixu8.2.1.1.htm 做過部分修改。1 基本思想 假設待排序的記錄存放在陣列r 1.n 中。初始時,r 1 自成1個有序區,無序區為r 2.n 從i 2起直至...