泡沫排序|bubble sort
阿新 • • 發佈:2019-01-07
def BubbleSort(lst):
for i in range(len(lst)-1):
for j in range(len(lst)-1-i):
if lst[j]>lst[j+1]:
lst[j],lst[j+1] = lst[j+1],lst[j]
return lst
首先,不知道為啥它叫泡沫排序。。
主要思路:
從前往後比較數字(稱為A)和它下一個數字(稱為B)的大小,如果A>B,則它們交換位置。否則去觀察下一個數。
這樣會保證一個迴圈就可以使最大數的位置確定。下個迴圈去確認下一大的數(從大往小糾正順序)
舉個例子:test = [2,1,5,4,3]。
第一步比較2,1..由於2>1,交換位置:test = [1,2,5,4,3]。仍然繼續觀察2和它下一個數
由於2<5, 不做行動,開始觀察2下一個數:5
由於5>4,交換位置:test = [1,2,4,5,3].
由於5>3,交換位置:test = [1,2,4,3,5].
由此,確認了最大數的位置
所以需要大迴圈 (列表長度-1)次。(比方說有三個數字需要排列大小,只要我們知道其中兩個數字的位置,就可以確定最終位置,所以執行次數為3-1)
巢狀的小迴圈為(列表長度-1-已排列完畢的數字數量)次。(已經排列完了,就不需要再排列了,節省空間,避免多餘操作)