插入排序是一種簡單直觀且穩定的排序算法。
將一個數據插入到已經排好序的有序數據中,從而得到一個新的、個數加一的有序數據。
基本思想:
每步將一個待排序的記錄,按其關鍵碼值的大小插入前面已經排序的列表中適當位置上,直到全部插入完為止。
將排序的數組分成兩部分:第一部分已排好序的元素,第二部分包含即待插入元素。在排序過程中,分別從待插入元素中取出元素,插入到已排好序的元素列表中。
分類:
直接插入排序,二分插入排序(又稱折半插入排序)
二分插入排序在后面的文章會寫到。
直接插入排序
實例,將用戶輸入的列表按照從小到大排列
思路:
<1> 將列表分為兩部分,一部分為已排序好的元素,另一部分為待排序的元素。(若此列表無已排好的元素,直接將第一個元素視為已拍好的部分);
<2> 對待排序的部分進行遍歷,從第一個開始往已排好的部分進行插入;
<3> 假設待排序的元素坐標為 i ,則已排好序的最后一位坐標為 j = i-1;
<4> 將 i 與 j 坐標所對應的元素大小進行比較,若待排元素 i 小,則將此時的待排元素儲存為臨時變量,將已排好的元素 j 向后移動一位;
<5> 繼續向已排好序列前方進行尋找比較。此過程中,比臨時變量大的元素均向后移一位,直到找到比臨時變量小或者到達列表頂端為止。
<6> 將剛才的臨時變量賦值到合適的位置。
代碼實現:
def
Sorting
(
self
)
:
len_list
=
len
(
new_list
)
for
i
in
range
(
0
,
len_list
-
1
)
:
j
=
i
-
1
if
new_list
[
i
]
<
new_list
[
j
]
:
temp
=
new_list
[
i
]
new_list
[
i
]
=
new_list
[
j
]
j
-=
1
while
j
>
0
and
new_list
[
j
]
>
temp
:
new_list
[
j
+
1
]
=
new_list
[
j
]
j
-=
1
new_list
[
j
+
1
]
=
temp
new_list
=
list
(
input
(
'please input new numbers:'
)
)
Sorting
(
new_list
)
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
