資料結構學習之路(五)插入排序

2021-08-18 02:03:34 字數 786 閱讀 3282

插入排序是一種簡單直觀的排序方法,其思想是,每次將乙個待排序的關鍵字插入到前乙個已經排好序的序列中,知道全部排序完成。

插入排序有三種:直接插入排序,折半插入排序和希爾排序

顧名思義,直接插入排序就是從頭到尾,依次對每個關鍵字進行排序。是一種最簡單也是最直觀的插入排序。

我們對如下陣列進行排序,看每一次迴圈之後的結果:

雖然已經很盡力的畫了,但還是很難看,不過基本上每一步進行了怎樣的排序也是一目了然。

直接插入排序的效能分析入下:

空間複雜度:o(1)

時間複雜度: o(n2)

穩定性: 是乙個穩定的排序演算法

適用性: 適用於順序儲存和鏈式儲存的線性表。

note:大部分排序演算法都僅適用於順序儲存的線性表。

c語言**:

void insertsort(int * arr){

//陣列第一位用來設定哨兵,初始是乙個無意義的值

int i,j;

for (i = 2; ipython**:

def insertsort(l):

for i in range(2, len(l)):

if l[i]l[0]:

l[j+1] = l[j]

j -= 1

l[j+1] = l[0]

寫部落格有點耗時間,太影響自己的進度了。只能先放一放,等有時間再更新了。

資料結構學習(九) 插入排序

把n個待排序的元素看成乙個有序表和乙個無序表,開始時有序表中只有乙個元素,無序表中包含有n 1個元素,排序過程中每次從無序表中取出第乙個元素,把它的排序依次將有序元素的排序碼進行比較,將它插入到有序表中的適當位置,使之成為新的有序表。第1趟排序後的陣列 101,34,119,1 第2趟排序後的陣列 ...

資料結構 插入排序

演算法中經常會用到各種各樣的演算法,比較簡答的思想就是氣泡排序,一般剛開始程式設計時遇到排序問題時,會很容易想到冒泡排,氣泡排序是通過兩輛比較數值,從而將數字移動到開始或者末尾的位置,反覆重複這個過程從而就達到了排序的目的。其時間複雜度大概是 n2 還有一種比較常用的插入排序,其思想與氣泡排序比較類...

資料結構 插入排序

一 直接插入排序 1 直接插入排序的演算法思想 r i 的鍵值ki與r 0 r i 1 的鍵值依次比較 從後往前比 找到r i 應插入的位置,並把從該位置開始的記錄後移乙個位置,把r i 插入到找到的插入位置,完成一趟直接排序 重複選r i 1 r n 完成上述操作,直到排序完畢 注 為什麼要從後往...