【Python全棧筆記】07 [模塊二] 20 Oct 冒泡排序

給出一個列表,進行冒泡排序算法

 

原理算法: spa

 1 li = [52, 37, 23, 11, 3, 1, ]
 2 
 3 print(li)
 4 
 5 # 每次循環,進行一次排序,列表內數字兩兩比較,最大的數字排到最末尾 
 6 # 一共循環len(li) - 1 次
 7 
 8 for i in range(len(li) - 1):
 9     if li[i] > li[i + 1]:
10         temp = li[i]
11         li[i] = li[i+1]
12         li[i + 1] = temp
13 print(li)
14 
15 for i in range(len(li) - 2):
16     if li[i] > li[i + 1]:
17         temp = li[i]
18         li[i] = li[i+1]
19         li[i + 1] = temp
20 print(li)
21 
22 for i in range(len(li) - 3):
23     if li[i] > li[i + 1]:
24         temp = li[i]
25         li[i] = li[i+1]
26         li[i + 1] = temp
27 print(li)
28 
29 for i in range(len(li) - 4):
30     if li[i] > li[i + 1]:
31         temp = li[i]
32         li[i] = li[i+1]
33         li[i + 1] = temp
34 print(li)
35 
36 for i in range(len(li) - 5):
37     if li[i] > li[i + 1]:
38         temp = li[i]
39         li[i] = li[i+1]
40         li[i + 1] = temp
41 print(li)
42 
43 '''
44 輸出的結果:
45 [52, 37, 23, 11, 3, 1]
46 [37, 23, 11, 3, 1, 52]
47 [23, 11, 3, 1, 37, 52]
48 [11, 3, 1, 23, 37, 52]
49 [3, 1, 11, 23, 37, 52]
50 [1, 3, 11, 23, 37, 52]
51 '''

能夠看到以上排序每次步驟一致,只有一個變量(即不用對比最後一個元素)code

所以,能夠再設置一個變量j, 做爲循環時候的變量簡化操做,由此獲得:blog

 1 li = [52, 37, 23, 11, 3, 1, ]
 2 print(li)
 3 
 4 for j in range(1, len(li)):
 5     for i in range(len(li) - j):
 6         if li[i] > li[i + 1]:
 7             temp = li[i]
 8             li[i] = li[i+1]
 9             li[i + 1] = temp
10     print(li)
11 '''
12 結果:
13 [52, 37, 23, 11, 3, 1]
14 [37, 23, 11, 3, 1, 52]
15 [23, 11, 3, 1, 37, 52]
16 [11, 3, 1, 23, 37, 52]
17 [3, 1, 11, 23, 37, 52]
18 [1, 3, 11, 23, 37, 52]
19 '''
相關文章
相關標籤/搜索