1. 程式人生 > >Python冒泡排序(5)

Python冒泡排序(5)

[1] 交換 bubble 冒泡排序 冒泡 span div 結束 gpo

Python代碼:

"""
冒泡排序(5)

雙向冒泡,冒泡排序的一種變形。
在未排序的數中,每輪找出最小和最大的數分別放到首尾。

本例中:
第1輪:先將9放到正確位置,再將0放到正確位置;
第2輪:先將8放到正確位置,再將1放到正確位置;
第3輪:先將7放到正確位置,再將2放到正確位置;
第4輪:先將6放到正確位置,再將3放到正確位置;
第5輪:先將5放到正確位置,再將4放到正確位置;

"""

lst = [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
print("排序前: %s\r\n" %lst)

#
for i in range(int(len(lst)/2)):
    
print("第%s輪" % (i+1)) # for m in range(i,len(lst)-i-1): # 如果前大後小,則交換位置 if lst[m] > lst[m+1]: lst[m],lst[m+1] = lst[m+1],lst[m] print(" 右向冒泡第%s次 [%s]:%s,[%s]:%s比較 互換 %s" % (m-i+1,m,lst[m+1],m+1,lst[m],lst)) else: print(" 右向冒泡第%s次 [%s]:%s,[%s]:%s比較 不變 %s
" % (m-i+1,m,lst[m],m+1,lst[m+1],lst)) print("\r\n") # for n in range(len(lst)-i-2,i,-1): # 如果前大後小,則交換位置 if lst[n-1] > lst[n]: lst[n-1],lst[n] = lst[n],lst[n-1] print(" 左向冒泡第%s次 [%s]:%s,[%s]:%s比較 互換 %s" % (9-n-i,n-1,lst[n],n,lst[n-1],lst))
else: print(" 左向冒泡第%s次 [%s]:%s,[%s]:%s比較 不變 %s" % (9-n-i,n-1,lst[n-1],n,lst[n],lst)) print("\r\n排序後: %s" % lst)

輸出結果:

E:\python\algorithm>python3 bubbleSort5.py
排序前: [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]

第1輪
    右向冒泡第1次 [0]:3,[1]:6比較 不變 [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
    右向冒泡第2次 [1]:6,[2]:9比較 不變 [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]
    右向冒泡第3次 [2]:9,[3]:1比較 互換 [3, 6, 1, 9, 8, 7, 2, 5, 4, 0]
    右向冒泡第4次 [3]:9,[4]:8比較 互換 [3, 6, 1, 8, 9, 7, 2, 5, 4, 0]
    右向冒泡第5次 [4]:9,[5]:7比較 互換 [3, 6, 1, 8, 7, 9, 2, 5, 4, 0]
    右向冒泡第6次 [5]:9,[6]:2比較 互換 [3, 6, 1, 8, 7, 2, 9, 5, 4, 0]
    右向冒泡第7次 [6]:9,[7]:5比較 互換 [3, 6, 1, 8, 7, 2, 5, 9, 4, 0]
    右向冒泡第8次 [7]:9,[8]:4比較 互換 [3, 6, 1, 8, 7, 2, 5, 4, 9, 0]
    右向冒泡第9次 [8]:9,[9]:0比較 互換 [3, 6, 1, 8, 7, 2, 5, 4, 0, 9]


    左向冒泡第1次 [7]:4,[8]:0比較 互換 [3, 6, 1, 8, 7, 2, 5, 0, 4, 9]
    左向冒泡第2次 [6]:5,[7]:0比較 互換 [3, 6, 1, 8, 7, 2, 0, 5, 4, 9]
    左向冒泡第3次 [5]:2,[6]:0比較 互換 [3, 6, 1, 8, 7, 0, 2, 5, 4, 9]
    左向冒泡第4次 [4]:7,[5]:0比較 互換 [3, 6, 1, 8, 0, 7, 2, 5, 4, 9]
    左向冒泡第5次 [3]:8,[4]:0比較 互換 [3, 6, 1, 0, 8, 7, 2, 5, 4, 9]
    左向冒泡第6次 [2]:1,[3]:0比較 互換 [3, 6, 0, 1, 8, 7, 2, 5, 4, 9]
    左向冒泡第7次 [1]:6,[2]:0比較 互換 [3, 0, 6, 1, 8, 7, 2, 5, 4, 9]
    左向冒泡第8次 [0]:3,[1]:0比較 互換 [0, 3, 6, 1, 8, 7, 2, 5, 4, 9]
第2輪
    右向冒泡第1次 [1]:3,[2]:6比較 不變 [0, 3, 6, 1, 8, 7, 2, 5, 4, 9]
    右向冒泡第2次 [2]:6,[3]:1比較 互換 [0, 3, 1, 6, 8, 7, 2, 5, 4, 9]
    右向冒泡第3次 [3]:6,[4]:8比較 不變 [0, 3, 1, 6, 8, 7, 2, 5, 4, 9]
    右向冒泡第4次 [4]:8,[5]:7比較 互換 [0, 3, 1, 6, 7, 8, 2, 5, 4, 9]
    右向冒泡第5次 [5]:8,[6]:2比較 互換 [0, 3, 1, 6, 7, 2, 8, 5, 4, 9]
    右向冒泡第6次 [6]:8,[7]:5比較 互換 [0, 3, 1, 6, 7, 2, 5, 8, 4, 9]
    右向冒泡第7次 [7]:8,[8]:4比較 互換 [0, 3, 1, 6, 7, 2, 5, 4, 8, 9]


    左向冒泡第1次 [6]:5,[7]:4比較 互換 [0, 3, 1, 6, 7, 2, 4, 5, 8, 9]
    左向冒泡第2次 [5]:2,[6]:4比較 不變 [0, 3, 1, 6, 7, 2, 4, 5, 8, 9]
    左向冒泡第3次 [4]:7,[5]:2比較 互換 [0, 3, 1, 6, 2, 7, 4, 5, 8, 9]
    左向冒泡第4次 [3]:6,[4]:2比較 互換 [0, 3, 1, 2, 6, 7, 4, 5, 8, 9]
    左向冒泡第5次 [2]:1,[3]:2比較 不變 [0, 3, 1, 2, 6, 7, 4, 5, 8, 9]
    左向冒泡第6次 [1]:3,[2]:1比較 互換 [0, 1, 3, 2, 6, 7, 4, 5, 8, 9]
第3輪
    右向冒泡第1次 [2]:3,[3]:2比較 互換 [0, 1, 2, 3, 6, 7, 4, 5, 8, 9]
    右向冒泡第2次 [3]:3,[4]:6比較 不變 [0, 1, 2, 3, 6, 7, 4, 5, 8, 9]
    右向冒泡第3次 [4]:6,[5]:7比較 不變 [0, 1, 2, 3, 6, 7, 4, 5, 8, 9]
    右向冒泡第4次 [5]:7,[6]:4比較 互換 [0, 1, 2, 3, 6, 4, 7, 5, 8, 9]
    右向冒泡第5次 [6]:7,[7]:5比較 互換 [0, 1, 2, 3, 6, 4, 5, 7, 8, 9]


    左向冒泡第1次 [5]:4,[6]:5比較 不變 [0, 1, 2, 3, 6, 4, 5, 7, 8, 9]
    左向冒泡第2次 [4]:6,[5]:4比較 互換 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
    左向冒泡第3次 [3]:3,[4]:4比較 不變 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
    左向冒泡第4次 [2]:2,[3]:3比較 不變 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
第4輪
    右向冒泡第1次 [3]:3,[4]:4比較 不變 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
    右向冒泡第2次 [4]:4,[5]:6比較 不變 [0, 1, 2, 3, 4, 6, 5, 7, 8, 9]
    右向冒泡第3次 [5]:6,[6]:5比較 互換 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]


    左向冒泡第1次 [4]:4,[5]:5比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    左向冒泡第2次 [3]:3,[4]:4比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
第5輪
    右向冒泡第1次 [4]:4,[5]:5比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]



排序後:  [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

=====結束=====

Python冒泡排序(5)