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

Python冒泡排序(4)

冒泡排序 post span body print style nbsp bsp -i

Python代碼:

"""
冒泡排序(4)

在未排序的數中,通過兩兩比較[換位]的方式,將最小的數移至首位
N個數排序,則需要執行N-1輪,第1輪比較N-1次,後續每輪比上一輪少比較1次

本例中:
第1輪將0放到正確位置;
第2輪將1放到正確位置;
......
第9輪將8放到正確位置;

此方法中,兩個位置數字比較時,兩個位置都是變化的
第1輪第1次是位置8、位置9的數字比較,前者大,則互換位置;
第1輪第2次是位置7、位置8的數字比較,前者大,則互換位置;
......
第1輪第9次是位置0、位置1的數字比較,前者大,則互換位置;

第2輪第1次是位置8、位置9的數字比較,前者大,則互換位置;
......
第2輪第8次是位置1、位置2的數字比較,前者大,則互換位置;
......

""" lst = [3, 6, 9, 1, 8, 7, 2, 5, 4, 0] print("排序前: %s\r\n" %lst) # for i in range(len(lst)-1,0,-1): #[9,8,7,6,5,4,3,2,1] print("第%s輪" % (10-i)) # for j in range(len(lst)-1,len(lst)-i-1,-1): # 如果前大後小,則交換位置 if lst[j-1] > lst[j]: lst[j-1],lst[j] = lst[j],lst[j-1]
print(" 第%s次 [%s]:%s,[%s]:%s比較 互換 %s" % (9-j+1,j-1,lst[j],j,lst[j-1],lst)) else: print(" 第%s次 [%s]:%s,[%s]:%s比較 不變 %s" % (9-j+1,j-1,lst[j-1],j,lst[j],lst)) print("\r\n排序後: %s" % lst)

輸出結果:

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

第1輪
    第1次 [
8]:4,[9]:0比較 互換 [3, 6, 9, 1, 8, 7, 2, 5, 0, 4] 第2次 [7]:5,[8]:0比較 互換 [3, 6, 9, 1, 8, 7, 2, 0, 5, 4] 第3次 [6]:2,[7]:0比較 互換 [3, 6, 9, 1, 8, 7, 0, 2, 5, 4] 第4次 [5]:7,[6]:0比較 互換 [3, 6, 9, 1, 8, 0, 7, 2, 5, 4] 第5次 [4]:8,[5]:0比較 互換 [3, 6, 9, 1, 0, 8, 7, 2, 5, 4] 第6次 [3]:1,[4]:0比較 互換 [3, 6, 9, 0, 1, 8, 7, 2, 5, 4] 第7次 [2]:9,[3]:0比較 互換 [3, 6, 0, 9, 1, 8, 7, 2, 5, 4] 第8次 [1]:6,[2]:0比較 互換 [3, 0, 6, 9, 1, 8, 7, 2, 5, 4] 第9次 [0]:3,[1]:0比較 互換 [0, 3, 6, 9, 1, 8, 7, 2, 5, 4] 第2輪 第1次 [8]:5,[9]:4比較 互換 [0, 3, 6, 9, 1, 8, 7, 2, 4, 5] 第2次 [7]:2,[8]:4比較 不變 [0, 3, 6, 9, 1, 8, 7, 2, 4, 5] 第3次 [6]:7,[7]:2比較 互換 [0, 3, 6, 9, 1, 8, 2, 7, 4, 5] 第4次 [5]:8,[6]:2比較 互換 [0, 3, 6, 9, 1, 2, 8, 7, 4, 5] 第5次 [4]:1,[5]:2比較 不變 [0, 3, 6, 9, 1, 2, 8, 7, 4, 5] 第6次 [3]:9,[4]:1比較 互換 [0, 3, 6, 1, 9, 2, 8, 7, 4, 5] 第7次 [2]:6,[3]:1比較 互換 [0, 3, 1, 6, 9, 2, 8, 7, 4, 5] 第8次 [1]:3,[2]:1比較 互換 [0, 1, 3, 6, 9, 2, 8, 7, 4, 5] 第3輪 第1次 [8]:4,[9]:5比較 不變 [0, 1, 3, 6, 9, 2, 8, 7, 4, 5] 第2次 [7]:7,[8]:4比較 互換 [0, 1, 3, 6, 9, 2, 8, 4, 7, 5] 第3次 [6]:8,[7]:4比較 互換 [0, 1, 3, 6, 9, 2, 4, 8, 7, 5] 第4次 [5]:2,[6]:4比較 不變 [0, 1, 3, 6, 9, 2, 4, 8, 7, 5] 第5次 [4]:9,[5]:2比較 互換 [0, 1, 3, 6, 2, 9, 4, 8, 7, 5] 第6次 [3]:6,[4]:2比較 互換 [0, 1, 3, 2, 6, 9, 4, 8, 7, 5] 第7次 [2]:3,[3]:2比較 互換 [0, 1, 2, 3, 6, 9, 4, 8, 7, 5] 第4輪 第1次 [8]:7,[9]:5比較 互換 [0, 1, 2, 3, 6, 9, 4, 8, 5, 7] 第2次 [7]:8,[8]:5比較 互換 [0, 1, 2, 3, 6, 9, 4, 5, 8, 7] 第3次 [6]:4,[7]:5比較 不變 [0, 1, 2, 3, 6, 9, 4, 5, 8, 7] 第4次 [5]:9,[6]:4比較 互換 [0, 1, 2, 3, 6, 4, 9, 5, 8, 7] 第5次 [4]:6,[5]:4比較 互換 [0, 1, 2, 3, 4, 6, 9, 5, 8, 7] 第6次 [3]:3,[4]:4比較 不變 [0, 1, 2, 3, 4, 6, 9, 5, 8, 7] 第5輪 第1次 [8]:8,[9]:7比較 互換 [0, 1, 2, 3, 4, 6, 9, 5, 7, 8] 第2次 [7]:5,[8]:7比較 不變 [0, 1, 2, 3, 4, 6, 9, 5, 7, 8] 第3次 [6]:9,[7]:5比較 互換 [0, 1, 2, 3, 4, 6, 5, 9, 7, 8] 第4次 [5]:6,[6]:5比較 互換 [0, 1, 2, 3, 4, 5, 6, 9, 7, 8] 第5次 [4]:4,[5]:5比較 不變 [0, 1, 2, 3, 4, 5, 6, 9, 7, 8] 第6輪 第1次 [8]:7,[9]:8比較 不變 [0, 1, 2, 3, 4, 5, 6, 9, 7, 8] 第2次 [7]:9,[8]:7比較 互換 [0, 1, 2, 3, 4, 5, 6, 7, 9, 8] 第3次 [6]:6,[7]:7比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 9, 8] 第4次 [5]:5,[6]:6比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 9, 8] 第7輪 第1次 [8]:9,[9]:8比較 互換 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 第2次 [7]:7,[8]:8比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 第3次 [6]:6,[7]:7比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 第8輪 第1次 [8]:8,[9]:9比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 第2次 [7]:7,[8]:8比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 第9輪 第1次 [8]:8,[9]:9比較 不變 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 排序後: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

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

Python冒泡排序(4)