Python氣泡排序(3)

2022-07-22 08:15:13 字數 3987 閱讀 7429

python**:

"""

氣泡排序(3)

在未排序的數中,通過兩兩比較[換位]的方式,將最大的數移至末尾

n個數排序,則需要執行n-1輪,第1輪比較n-1次,後續每輪比上一輪少比較1次

本例中:

第1輪將9放到正確位置;

第2輪將8放到正確位置;

......

第9輪將1放到正確位置;

此方法中,兩個位置數字比較時,有乙個位置是不變的

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

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

......

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

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

......

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

......

"""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(i-1,-1,-1):

#如果前大後小,則交換位置

if lst[j] >lst[i]:

lst[i],lst[j] =lst[j],lst[i]

print("

第%s次 [%s]:%s,[%s]:%s比較 互換 %s

" % (i-j,j,lst[i],i,lst[j],lst))

else

:

print("

第%s次 [%s]:%s,[%s]:%s比較 不變 %s

" % (i-j,j,lst[j],i,lst[i],lst))

print("

\r\n排序後: %s

" % lst)

輸出結果:

e:\python\algorithm>python3  bubblesort3.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,[9]:4比較 互換 [3, 6, 9, 1, 8, 7, 2, 4, 0, 5]

第3次 [6]:2,[9]:5比較 不變 [3, 6, 9, 1, 8, 7, 2, 4, 0, 5]

第4次 [5]:7,[9]:5比較 互換 [3, 6, 9, 1, 8, 5, 2, 4, 0, 7]

第5次 [4]:8,[9]:7比較 互換 [3, 6, 9, 1, 7, 5, 2, 4, 0, 8]

第6次 [3]:1,[9]:8比較 不變 [3, 6, 9, 1, 7, 5, 2, 4, 0, 8]

第7次 [2]:9,[9]:8比較 互換 [3, 6, 8, 1, 7, 5, 2, 4, 0, 9]

第8次 [1]:6,[9]:9比較 不變 [3, 6, 8, 1, 7, 5, 2, 4, 0, 9]

第9次 [0]:3,[9]:9比較 不變 [3, 6, 8, 1, 7, 5, 2, 4, 0, 9]

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

第2次 [6]:2,[8]:4比較 不變 [3, 6, 8, 1, 7, 5, 2, 0, 4, 9]

第3次 [5]:5,[8]:4比較 互換 [3, 6, 8, 1, 7, 4, 2, 0, 5, 9]

第4次 [4]:7,[8]:5比較 互換 [3, 6, 8, 1, 5, 4, 2, 0, 7, 9]

第5次 [3]:1,[8]:7比較 不變 [3, 6, 8, 1, 5, 4, 2, 0, 7, 9]

第6次 [2]:8,[8]:7比較 互換 [3, 6, 7, 1, 5, 4, 2, 0, 8, 9]

第7次 [1]:6,[8]:8比較 不變 [3, 6, 7, 1, 5, 4, 2, 0, 8, 9]

第8次 [0]:3,[8]:8比較 不變 [3, 6, 7, 1, 5, 4, 2, 0, 8, 9]

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

第2次 [5]:4,[7]:2比較 互換 [3, 6, 7, 1, 5, 2, 0, 4, 8, 9]

第3次 [4]:5,[7]:4比較 互換 [3, 6, 7, 1, 4, 2, 0, 5, 8, 9]

第4次 [3]:1,[7]:5比較 不變 [3, 6, 7, 1, 4, 2, 0, 5, 8, 9]

第5次 [2]:7,[7]:5比較 互換 [3, 6, 5, 1, 4, 2, 0, 7, 8, 9]

第6次 [1]:6,[7]:7比較 不變 [3, 6, 5, 1, 4, 2, 0, 7, 8, 9]

第7次 [0]:3,[7]:7比較 不變 [3, 6, 5, 1, 4, 2, 0, 7, 8, 9]

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

第2次 [4]:4,[6]:2比較 互換 [3, 6, 5, 1, 2, 0, 4, 7, 8, 9]

第3次 [3]:1,[6]:4比較 不變 [3, 6, 5, 1, 2, 0, 4, 7, 8, 9]

第4次 [2]:5,[6]:4比較 互換 [3, 6, 4, 1, 2, 0, 5, 7, 8, 9]

第5次 [1]:6,[6]:5比較 互換 [3, 5, 4, 1, 2, 0, 6, 7, 8, 9]

第6次 [0]:3,[6]:6比較 不變 [3, 5, 4, 1, 2, 0, 6, 7, 8, 9]

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

第2次 [3]:1,[5]:2比較 不變 [3, 5, 4, 1, 0, 2, 6, 7, 8, 9]

第3次 [2]:4,[5]:2比較 互換 [3, 5, 2, 1, 0, 4, 6, 7, 8, 9]

第4次 [1]:5,[5]:4比較 互換 [3, 4, 2, 1, 0, 5, 6, 7, 8, 9]

第5次 [0]:3,[5]:5比較 不變 [3, 4, 2, 1, 0, 5, 6, 7, 8, 9]

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

第2次 [2]:2,[4]:1比較 互換 [3, 4, 1, 0, 2, 5, 6, 7, 8, 9]

第3次 [1]:4,[4]:2比較 互換 [3, 2, 1, 0, 4, 5, 6, 7, 8, 9]

第4次 [0]:3,[4]:4比較 不變 [3, 2, 1, 0, 4, 5, 6, 7, 8, 9]

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

第2次 [1]:2,[3]:1比較 互換 [3, 1, 0, 2, 4, 5, 6, 7, 8, 9]

第3次 [0]:3,[3]:2比較 互換 [2, 1, 0, 3, 4, 5, 6, 7, 8, 9]

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

第2次 [0]:2,[2]:1比較 互換 [1, 0, 2, 3, 4, 5, 6, 7, 8, 9]

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

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

*****結束*****

Python3 氣泡排序

參考 菜鳥教程 氣泡排序 bubble sort 重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。一輪一輪,直到無需再交換。例 小朋友按身高排序,兩兩比較,矮個子站前面 a 0.9m b 0.8m c 1.1m d 0.75m e 1.24m a b c d e b ...

python3氣泡排序

氣泡排序演算法的運作如下 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。a 99...

排序 3 氣泡排序

氣泡排序我想初學程式設計的人都很熟悉,是我們大家最常使用到的,也是最簡單的排序,所以我也不過多的介紹了。氣泡排序屬於交換排序是穩定的排序 時間複雜度 最好情況 o n 最壞情況o n2 平均情況o n2 空間複雜度 o 1 它的排序思想也很簡單我們簡單介紹一下 對於n個資料,從第乙個資料開始依次對相...