python實現
逐個元素排查,第乙個元素預設已排序,從第二個元素開始,比較當前元素與前乙個元素的大小,前乙個元素大於當前元素,則交換兩個元素位置,交換後再用已經交換到前乙個位置的當前元素與現位置的前乙個元素比較,直到無需交換,進入下乙個元素,以此類推,遍歷完所有位置的元素。
最壞:原陣列完全逆序
ω(n^2)
最好:原陣列已基本排序或完全排序
o(n)
精簡
import copy
import time
# 插入排序法
definsert_func
(obj)
:"""
排序中不寫入當前值,每輪最後寫入
"""for i in
range(1
,len
(obj)):
current = obj[i]
j = i
while j >
0and obj[j -1]
> current:
obj[j]
= obj[j -1]
j -=
1 obj[j]
= current
加列印版
import copy
import time
# 插入排序法
definsert1
(obj)
:"""
排序中不寫入當前值,每輪最後寫入
:param obj: 未排序陣列
:return: obj: 排序後陣列
"""t1 = time.time(
)print
("未排序之前陣列:{}"
.format
(obj)
)for i in
range(1
,len
(obj)):
current = obj[i]
print
("當前排序數:{}"
.format
(current)
) j = i
while j >
0and obj[j -1]
> current:
obj[j]
= obj[j -1]
print
("本輪排序中:{}"
.format
(obj)
) j -=
1 obj[j]
= current
print
("本輪排序完:{}"
.format
(obj)
)print
("最終排序結果:{}"
.format
(obj)
) t2 = time.time(
)print
("time:%s"
%(t2-t1)
)return obj
definsert2
(obj)
:"""
排序中直接與前一位交換,在前一位寫入當前值
:param obj: 未排序陣列
:return: obj: 排序後陣列
"""t1 = time.time(
)print
("未排序之前陣列:{}"
.format
(obj)
)for i in
range(1
,len
(obj)):
print
("當前排序數:{}"
.format
(obj[i]))
j = i
while j >
0and obj[j -1]
> obj[j]
: obj[j]
, obj[j -1]
= obj[j -1]
, obj[j]
print
("本輪排序中:{}"
.format
(obj)
) j -=
1print
("本輪排序完:{}"
.format
(obj)
)print
("最終排序結果:{}"
.format
(obj)
) t2 = time.time(
)print
("time:%s"
%(t2-t1)
)return obj
if __name__ ==
'__main__'
: li =[3
,1,4
,7,2
,8,6
,5] lii = copy.deepcopy(li)
insert1(li)
print
("*"*20
) insert2(lii)
倒序排序
將》換為<
def
insert_func
(obj)
:"""
排序中不寫入當前值,每輪最後寫入
"""for i in
range(1
,len
(obj)):
current = obj[i]
j = i
while j >
0and obj[j -1]
< current:
obj[j]
= obj[j -1]
j -=
1 obj[j]
= current
插入排序 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 是一種比較簡單直觀的排序演算法。插入排序的步驟 從第乙個元素開始,該元素可以認為已經被排序 取出下乙個元素作為待插入物件,在已排序序列中從後向前掃瞄 如果該元素小於前乙個元素,則將兩者調換,再與前乙個元素比較 重複第三步,直到前乙個元素不大於待插元素 將新元素...