Python實現插入排序

2021-08-28 02:39:31 字數 838 閱讀 2467

插入排序(insertion sort)是一種比較簡單直觀的排序演算法。

插入排序的步驟:

從第乙個元素開始,該元素可以認為已經被排序

取出下乙個元素作為待插入物件,在已排序序列中從後向前掃瞄

如果該元素小於前乙個元素,則將兩者調換,再與前乙個元素比較

重複第三步,直到前乙個元素不大於待插元素

將新元素插入到該位置中

重複第二步

def

insertionsort

(source):

# 從第二個位置,即下標為1的元素開始向前插入

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

# 從第i個元素開始向前比較,如果小於前乙個元素,交換位置

for j in range(i, 0, -1):

if source[j] < source[j - 1]:

source[j], source[j - 1] = source[j - 1], source[j]

return source

s = [8,6,13,7,17,1,4,5,2]

print(insertionsort(s))

# 輸出:

# [1, 2, 4, 5, 6, 7, 8, 13, 17]

最優時間複雜度:o(n) (輸入已經有序,一次掃瞄即可完成排序)

最壞時間複雜度:o(n2)(輸入為反序)

平均時間複雜度:o(n2)

空間複雜度:o(1)

穩定性: 假設a=b,且a在b的前面,a的排序位置必然比b先確定,後面b進行插入時必然是在a的後面,所以是穩定的。

插入排序 python實現

以下是插入排序的python函式實現 def insert sort arr for j in range 1,len arr 從list第二個元素開始 key arr j 儲存將要進行插入排序的元素數值 index j 儲存將要進行插入排序的元素的索引 while index 0 and arr ...

python實現插入排序

插入排序 英語 insertion sort 是一種簡單直觀的排序演算法。它的工作原理是通過構建有序序列,對於未排序資料,在已排序序列中從後向前掃瞄,找到相應位置並插入。插入排序在實現上,在從後向前掃瞄過程中,需要反覆把已排序元素逐步向後挪位,為最新元素提供插入空間。插入排序分析 實現 i 1 1 ...

Python 實現插入排序

插入排序適合於部分有序序列和小規模的資料。其平均時間複雜度為 o n 2 空間複雜度為 o 1 並且為穩定排序。插入排序將待排序序列分為有序區 記為 s 區 和無序區 記為 r 區 以從小到大的順序為例,每次從 r 區彈出乙個元素 o,要將元素 o 插入到 s 區中恰當位置。從 s 區最右端開始,依...