基於比較的演算法之三 插入排序

2022-02-13 02:05:09 字數 717 閱讀 3667

插入排序的思想是:

1。假設第乙個元素是有序的,理解這個有序是針對只有這乙個元素。

2。然後依次拿出後面元素插入到前面元素構成的有序序列裡面(這個過程保證了演算法的穩定性,因為遇到等於小於自己的時候就停止插入操作)。

3。直到最後乙個元素插入到插入到前面的有序序列,完畢。

時間複雜度分析:

假設陣列有n個元素

最好情況:n個元素是逆序的,則每個元素需要2次比較,3次資料移動

所以總次數為5(n-1)次(第乙個元素不用比較了)

時間複雜度為o(n)

最壞的情況,n個元素是已經拍好順序的,則第i個元素需要比較的次數是i次,0次資料移動,i=0,1,2...(n-1)

所以比較次數總數c

max=n(n-1)/2

時間複雜度為o(n2)

下面給出c#的通用插入排序演算法實現:

startindex為排序區間的陣列元素下標,通常為0,
endindex為排序區間的陣列元素下標,通常為array.length-1

public

class insertionsortwhere t : icomparable

array[targetindex] =tmp;}}

}

排序演算法之三 插入排序

插入排序 insertion sort 是一種簡單直觀且穩定的排序演算法。插入排序類似於打撲克牌,從第二張牌開始插入,小的插到大的前面,然後使其有序。再拿第三張牌來,找到合適的位置繼續插入,使這三張有序。在第四張直至全部插入有序。空間複雜度 o 1 穩定性 穩定 假設存在這樣乙個陣列a 5 陣列中存...

八大排序演算法之(三)插入排序 折半插入排序

折半插入排序演算法原理 把乙個新的元素插入已經拍好順序的陣列的過程中,尋找插入位置時,將待插入區域的首元素設定為a left 末元素設定為a right 比較時,將待插入元素與a mid 其中mid left right 2相比較,如果比參考元素小,則選擇a left 到a mid 1 為新的插入區...

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

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