要學習冒泡排序必須知道它的原理:
冒泡排序算法的原理如下:
-
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
-
對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
-
針對所有的元素重復以上的步驟,除了最后一個。
-
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
例子:
1,2,3,4,5,6
就拿1到6來舉例子吧!這里面有n個數字,你要對其進行從大到小的排序的話,你就要拿相鄰的兩個數進行比較,如果第一個數比第二個大就交換他們的位置:第二個就和第三個比較,一直這樣下去,直到最小的就會在最后面了,然后繼續從第一和第二個進行比較,如此下去。
第1輪: 1,2,3,4,5,6 2,1,3,4,5,6 2,3,1,4,5,6 2,3,4,1,5,6 2,3,4,5,1,6 2,3,4,5,6,1
第2輪:2,3,4,5,6,1 3,2,4,5,6,1 3,4,2,5,6,1 3,4,5,2,6,1 3,4,5,6,2,1
第3輪:3,4,5,6,2,1 4,3,5,6,2,1 4,5,3,6,2,1 4,5,6,3,2,1
第4輪:4,5,6,3,2,1 5,4,6,3,2,1 5,6,4,3,2,1
第5輪:5,6,4,3,2,1 6,5,4,3,2,1
由上面可以清楚了解到一個進行了五輪排序,后一輪都要比前一輪少一次比較,第一輪進行n-1次比較
這樣就可以編寫代碼了
a_list = [1, 2, 3, 4, 5, 6]
for t in range(len(a_list)-1):
for i in range(0, len(a_list)-1):
tmp = a_list[i]
if a_list[i] < a_list[i+1]:
a_list[i] = a_list[i+1]
a_list[i+1] =tmp
print(a_list)
這樣就是冒泡排序了。
