依次比較相鄰兩元素,若前一元素大於後一元素則交換之,直至最後乙個元素即為最大;
然後重新從首元素開始重複同樣的操作,直至倒數第二個元素即為次大元素;
依次類推。如同水中的氣泡,依次將最大或最小元素氣泡浮出水面。
#氣泡排序
defbubble_sort(li):
#建立乙個識別符號
flag =false
for i in range(len(li)-1):
for j in range(len(li)-i-1):
if li[j] > li[j+1]:
li[j], li[j+1] = li[j+1], li[j]
flag =true
#如果沒進行交換,則本身有序,直接break
ifnot
flag:
break
return li
首先初始化最小元素索引值為首元素,依次遍歷待排序數列,若遇到小於該最小索引位置處的元素則重新整理最小索引為該較小元素的位置,直至遇到尾元素,結束一次遍歷,並將最小索引處元素與首元素交換;
然後,初始化最小索引值為第二個待排序數列元素位置,同樣的操作,可得到數列第二個元素即為次小元素;以此類推。
#選擇排序 o(n^2)
#從第乙個元素開始選擇最小的元素放在第一位,然後再選擇第二個元素
defselect_sort(li):
for i in range(len(li)-1):
#第i趟 無序區範圍i到最後
min_pos = i #
無序區最小值位置
for j in range(i+1, len(li)):
if li[j] min_pos =j
li[i], li[min_pos] = li[min_pos], li[i]
將列表分為有序區和無序區兩個部分,最初有序區只有乙個元素,即第乙個元素。
然後每次從無序區選擇乙個元素,插入到有序區中,直到無序區為空。
如下圖,橙色為有序區,淺藍色為無序區。
#選擇排序 o(n2)
definsert_sort(li):
#i表示從下標1開始的數字, 第二個元素
for i in range(1, len(li)):
tmp =li[i]
j = i - 1
#只要往後挪就迴圈
while j >= 0 and li[j] >tmp:
#如果j = -1停止挪, 如果li[j]小於tmp停止挪
li[j + 1] =li[j]
j -= 1
#j位置在迴圈結束的時候要麼是-1要麼是比tmp小的值
li[j+1] = tmp
~>.<~
使用python實現冒泡 選擇 插入基礎排序
依次比較相鄰兩元素,若前一元素大於後一元素則交換之,直至最後乙個元素即為最大 然後重新從首元素開始重複同樣的操作,直至倒數第二個元素即為次大元素 依次類推。如同水中的氣泡,依次將最大或最小元素氣泡浮出水面。氣泡排序 defbubble sort li 建立乙個識別符號 flag false for ...
使用Python實現氣泡排序
使用python實現氣泡排序 python 利用python實現氣泡排序 個人第一次在csdn上寫部落格,初學python,這道題目是老師上課的隨堂練習題目。將 貼在這裡,供自己以後檢視,也供其他同學參考。氣泡排序是排序演算法中非常常見的一種,大致意思是有一列數字1,4,3,2,6,5 由於1 4 ...
python實現冒泡選擇插入快排
通過交換使相鄰的兩個數變成小數在前大數在後,這樣每次遍歷後,最大的數就 沉 到最後面了。重複n次即可以使陣列有序。def butttle arr for i in range len arr 1 exchange false for j in range len arr i 1 if arr j a...