冒泡就是重複地遍歷要排序的數列,一次比較兩個元素(泡泡),如果他們的順序錯誤就把他們交換過來,像泡泡一樣,依次按照順序上升排列。
冒泡排序算法的運作如下:
- 比較相鄰的元素。如果第一個比第二個大(升序),就交換他們兩個。
- 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
- 針對所有的元素重複以上的步驟,除了最後一個。
- 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
寫了三種冒泡,大同小異,差不多都一樣昂,這應該是註釋最多的冒泡排序了吧O(∩_∩)O哈哈~
1 ##第一種冒泡##
2 a=[2,9,4,1]#列表
3 n=len(a)#a的列表元素長度.n=4
4 for i in range(n-1):#外循環,控制循環輪數,n-1是索引從0開始取的。(n-1=3)
5 for j in range(n-i-1):#內循環控制元素循環次數(n-i-1=3)
6 if a[j]>a[j+1]:#j=0,j+1=1,如果a[0]>a[0+1]
7 a[j],a[j+1]=a[j+1],a[j]#複合賦值,如果滿足條件則進行調換
8 print(a)
9 ##第二種冒泡##
10 a=[2,9,4,1]#列表
11 n=len(a)#a的列表元素長度.n=4
12 for i in range(n-1):#外循環,控制循環輪數,n-1是索引從0開始取的。(n-1=3)
13 for j in range(n-i-1):#內循環控制元素循環次數(n-i-1=3)
14 if a[j]>a[j+1]:#j=0,j+1=1,如果a[0]>a[0+1]
15 #這種調換方式比較麻煩些,不像上一個一步到位
16 jj = a[j + 1]#把a[j+1]賦值給jj
17 a[j + 1] = a[j]#然後再把a[j]賦值給a[jz=1]
18 a[j] = jj#然後再把jj賦值給a[j]
19 print(a)
20 ##第三種冒泡##
21 aa = [2,9,4,1]
22 def sort(aa):#定義一個函數
23 print('排序前:')
24 print(aa)
25 for i in range(len(aa)-1):#len(aa)#得出aa的元素長度
26 for j in range(len(aa)-1-i):#剩下的就給上面的一樣了
27 if aa[j]>aa[j+1]:
28 aa[j],aa[j+1]=aa[j+1],aa[j]
29 print('第{}次排序後:'.format(i+1))#用到了format函數
30 print(aa)
31 sort(aa)
32 print('排序後:')
33 print(aa)
最後來個直接排序的函數,一招制敵。
aa = [2,9,4,1]
aa.sort(reverse=False)#sort直接排序函數,True 降序,False 升序(默認)。
print(aa)
原文出處:https://www.cnblogs.com/wuzhuangzhuang/p/12119763.html