十大經典排序演算法 插入排序

2022-09-23 12:48:07 字數 1093 閱讀 9338

插入排序(insertion-sort)的演算法描述是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。

把n個待排序的元素看成為乙個有序表和乙個無序表。開始時有序表中只包含1個元素,無序表中包含有n-1個元素,排序過程中每次從無序表中取出第乙個元素,將它插入到有序表中的適當位置,使之成為新的有序表,重複n-1次可完成排序過程。

舉個例子,假設我現在有乙個數列[11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22]需要使用插入排序,我們來看看使用插入排序的詳細步驟:

注:從第二個元素開始,以此和前面的元素比較,找出相應位置插入。

**用python實現

def insertion_sort(arr):

"""插入排序"""

# 第一層for表示迴圈插入的遍數

for i in range(1, len(arr)):

# 設定當前需要插入的元素

current = arr[i]

# 與當前元素比較的比較元素

pre_index = i - 1

while pre_index >= 0 and arr[pre_index] > current:

# 當比較元素大於當前元素則把比較元素後移

arr[pre_index + 1] = arr[pre_index]

# 往前選擇下乙個比較元素

pre_index -= 1

# 當比較元素小於當前元素,則將當前元素插入在 其後面

arr[pre_index + 1] = current

return arr

insertion_sort([11, 11, 22, 33, 33, 36, 39, 44, 55, 66, 69, 77, 88, 99])

# 返回結果[11, 11, 22, 33, 33, 36, 39, 44, 55, 66, 69, 77, 88, 99]

插入排序的適用場景:乙個新元素需要插入到一組已經是有序的陣列中,或者是一組基本有序的陣列排序

十大經典排序演算法系列 二 插入排序

原理 1 元素依次比較大小,按條件交換位置 2 交換過位置的元素,往回與之前的元素比較大小,找到插入的位置,直到不符合交換位置的條件.跳出迴圈 3 繼續外層迴圈 var arr 0,0,1,2,3,4,5,6,12,22,123,333,333,444,555,666,777,888,999 fun...

十大經典排序演算法

載自 排序演算法是 資料結構與演算法 中最基本的演算法之一。排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有 插入排序 希爾排序 選擇排序 氣泡排序 歸併排序 快速排...

十大經典排序演算法

不穩定排序種類為4種 快速排序 核心思想是partition操作 二分法分而治之 平均時間複雜度nlogn 希爾排序 高階版的插入排序,先把間隔較遠的子串行排序,最後間隔為1時,等同於插入排序 插入排序在序列有序時,時間複雜度常數級,所以先讓子串行總體有序,能有效降低時間複雜度 平均時間複雜度n 1...