#!/usr/bin/env python
# -*- coding:utf8 -*-
def bubble_sort(alist):
# 結算列表的長度
n = len(alist)
# 外層迴圈控制從頭走到尾的次數
for j in range(n - 1):
# 用乙個count記錄一共交換的次數,可以排除已經是排好的序列
count = 0
# 內層迴圈控制走一次的過程
for i in range(0, n - 1 - j):
# 如果前乙個元素大於後乙個元素,則交換兩個元素(公升序)
if alist[i] > alist[i + 1]:
# 交換元素
alist[i], alist[i + 1] = alist[i + 1], alist[i]
# 記錄交換的次數
count += 1
# count == 0 代表沒有交換,序列已經有序
if 0 == count:
break
if __name__ == '__main__':
alist = [54, 26, 93, 77, 44, 31, 44, 55, 20]
print("原列表為:%s" % alist)
bubble_sort(alist)
print("新列表為:%s" % alist)
內層迴圈需要注意理解的:
# 氣泡排序要排序n個數,由於每遍歷一趟只排好乙個數字,
# 則需要遍歷n-1趟,才能將n個數字排好;所以最外層迴圈是要迴圈n-1次
# #每次排序乙個數字的時候,假設它前面已經有i個數字已經排好了,由於將n個數字
# 排好需要n-1次,此時已經排好i個數字了,排下乙個數字需要遍歷n-1-i次
## 排第乙個數,n-1次
# 排第2個數,n-2次
# ...
# 排第i個數,n-i次
python冒泡法程式設計 Python實現氣泡排序法
python氣泡排序演算法的運作如下 1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。3.針對所有的元素重複以上的步驟,除了最後乙個。4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何...
Python學習 實現《氣泡排序法》
演算法思想 step1 將第乙個資料和第二個進行比較,若第乙個資料大於第二的資料,則將第乙個資料 大數 和第二個資料 小數 交換位置。再將第二個資料和第三個比較,若第二個資料大於第三個資料,交換資料。依次類推,直到最大的數排到最後的位置上。第1個迴圈結束。step2 將第乙個資料和第二個進行比較,若...
C和Python實現冒泡法排序
首先我們看冒泡法排序的原理,假設有乙個包含6個數字的陣列 其思路為 每次將相鄰兩個數比較,將小的調到前面,如果有6個數 8,7,5,4,2,0。第一次先將最前面的兩個數8和7對調 看下圖 第二次將第二個數和第三個數 8和5 對調.如此總計進行了5次,得到7 5 4 2 0 8的順序,可以看到 最大的...