排序方法(三)插入排序

2021-09-10 01:33:34 字數 845 閱讀 4452

使用語言:c語言,編譯器visual studio 2017

一.基本思想

假設從小到大排序。從第二個數開始往後遍歷,將每個數插入到前面的有序序列中,最後形成一整個有序序列。將第二個數與第乙個數比較,小的放前面,可以視為第一次插入;將第三個數插入到第一第二個數形成的有序序列中,這是第二次插入;…將最後乙個數插入完畢,則排序完畢。例子:將下列數排序:

二.**實現

#includeint main() 

printf("第1次插入的結果:%d %d\n", array[0], array[1]);

if (num == 2) return 0;

else

array[j + 1] = temp;

printf("第%d次插入的結果:", i);

for (int k = 0; k <= i; k++)

} }return 0;

}

三.時間複雜度分析(1)最好情況:序列原本就是有序的。則比較次數為n-1,時間複雜度為o(n)。

(2)最差情況:序列是逆序的。則比較次數和移動次數均為:1+2+3+4+……+n-1=(n-1)n/2,時間

複雜度為o(n^2)。

(3)平均情況:序列出現各種排列的概率相同,則比較次數和移動次數約為n^2/4,故此時時間複雜

度為o(n^2)。

三 插入排序

我們打牌的時候,拿到的牌經常是需要進行排序操作的,一般是一張一張的來,將每一張牌插入到其他有序的牌中的適當位置。基於這種思想,就有了插入演算法 通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。將第一待排序序列第乙個元素看做乙個有序序列,把第二個元素到最後乙個元素當成...

三 插入排序

插入排序 和打撲克牌,抓牌的過程是一樣的。大致就是這麼個意思,圖畫的不好,請擔待。圖上描述的是插入的過程,那麼他怎麼知道,乙個乙個的和前面的作比較,比前邊的數字小就交換,一直交換到正確的位置。package bubbling 插入排序 author zy 劉會發 version 1.0 since ...

排序演算法(三)插入排序

今天來更新排序演算法中的第三種演算法 插入排序插入排序是基於比較的排序。所謂的基於比較,就是通過比較陣列中的元素,看誰大誰小,根據結果來調整元素的位置 因此,對於這類排序,就有兩種基本的操作 比較操作 交換操作其中,對於交換操作,可以優化成移動操作,即不直接進行兩個元素的交換,還是用乙個樞軸元素 t...