python實現插入排序

2021-08-19 18:53:00 字數 1577 閱讀 4915

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

插入排序分析

實現

'''

i = 1 , [1] 依次從後向前比較, alist[1]與alist[0]比較

i = 2 , [2,1] 依次從後向前比較, alist[1]與alist[0]比較 , alist[2]與alist[1]比較

i = 3 , [3,2,1] 依次從後向前比較, alist[1]與alist[0]比較 , alist[2]與alist[1]比較 , alist[3]與alist[2]比較

i = 4 , [4,3,2,1] 依次從後向前比較, alist[1]與alist[0]比較 , alist[2]與alist[1]比較 , alist[3]與alist[2]比較........

.i = n-1 , [n-1,n-2,n-3,...,1] ---> for j in range(i, 0, -1) , 依次從後向前比較......

時間複雜度:o(n2)

穩定性:穩定

優化演算法,資料剛好都是已排序時,最佳時間複雜度:o(n)

'''def insertionsort(alist):

'''插入排序'''

n = len(alist)

for i in range(1, n):

# 拿未排序的第乙個資料與已排序的資料依次從後面開始比較大小

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

# 如果比前面乙個數小,就交換位置

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

alist[j], alist[j-1] = alist[j-1], alist[j]

# 演算法優化

else:

break

if __name__ == '__main__':

alist = [3, 4, 6, 34, 1, 2, 43, 5, 8, 6, 56, 9, 7, 4]

print(alist)

insertion_sort = insertionsort(alist)

print(alist)

執行結果:

/home/longhui/desktop/資料結構與演算法/venv/bin/python /home/longhui/desktop/資料結構與演算法/venv/mycode/6_sorting_and_searching/insertion_sort.py

[3, 4, 6, 34, 1, 2, 43, 5, 8, 6, 56, 9, 7, 4]

[1, 2, 3, 4, 4, 5, 6, 6, 7, 8, 9, 34, 43, 56]

process finished with exit code 0

插入排序 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 是一種比較簡單直觀的排序演算法。插入排序的步驟 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素作為待插入物件,在已排序序列中從後向前掃瞄 如果該元素小於前乙個元素,則將兩者調換,再與前乙個元素比較 重複第三步,直到前乙個元素不大於待插元素 將新元素...

Python 實現插入排序

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