1. 程式人生 > >python寫氣泡排序

python寫氣泡排序


冒泡就是重複地遍歷要排序的數列,一次比較兩個元素(泡泡),如果他們的順序錯誤就把他們交換過來,像泡泡一樣,依次按照順序上升排列。

 氣泡排序演算法的運作如下:

  • 比較相鄰的元素。如果第一個比第二個大(升序),就交換他們兩個。
  • 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。
  • 針對所有的元素重複以上的步驟,除了最後一個。
  • 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
寫了三種冒泡,大同小異,差不多都一樣昂,這應該是註釋最多的氣泡排序了吧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): 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)