Python 實現插入排序

2021-09-10 23:46:46 字數 957 閱讀 5551

插入排序適合於部分有序序列和小規模的資料。其平均時間複雜度為 o(n^2),空間複雜度為 o(1),並且為穩定排序。

插入排序將待排序序列分為有序區 (記為 s 區)和無序區(記為 r 區)。以從小到大的順序為例,每次從 r 區彈出乙個元素 o,要將元素 o 插入到 s 區中恰當位置。從 s 區最右端開始,依次比較 s 區元素與元素 o 的大小。如果元素o 比 s 區元素小,就將 s 區元素後移一位。如果元素 o 大於 s 區元素,就在該元素右邊一位插入元素 o。

import random

# python高效程式設計

definsertionsort

(sequence)

:# 複製序列

seq = sequence[:]

for i in

range(1

,len

(seq)):

value = seq[i]

j = i -

1while j >=

0and seq[j]

> value:

seq[j+1]

= seq[j]

j -=

1# j 在上面多減了 1,要加回來

seq[j+1]

= value

return seq

random.seed(

520)

seq =

[random.randint(1,

100)

for _ in

range(12

)]print

(seq)

print

(insertionsort(seq)

)#[2, 8, 51, 52, 18, 58, 56, 98, 54, 27, 32, 50]

#[2, 8, 18, 27, 32, 50, 51, 52, 54, 56, 58, 98]

插入排序 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實現插入排序

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