Python氣泡排序(1)

2022-07-22 08:24:13 字數 4002 閱讀 2224

氣泡排序:通過與相鄰元素比較的方式每次將乙個數歸位

python**:

"""

氣泡排序(1)

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

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

本例中:

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

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

......

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

此方法中,兩個位置數字比較時,兩個位置都是變化的

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

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

......

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

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

......

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

......

"""lst = [3, 6, 9, 1, 8, 7, 2, 5, 4, 0]

print("

排序前: %s\r\n

" %lst)#輪

for i in range(len(lst)-1):

print("

第%s輪

" % (i+1))

#次for j in range(len(lst)-i-1):

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

if lst[j] > lst[j+1]:

lst[j],lst[j+1] = lst[j+1],lst[j]

print("

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

" % (j+1,j,lst[j+1],j+1,lst[j],lst))

else

:

print("

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

" % (j+1,j,lst[j],j+1,lst[j+1],lst))

print("

\r\n排序後: %s

" % lst)

輸出結果:

e:\python\algorithm>python3 bubblesort.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]

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

第2次 [1]:2,[2]:0比較 互換 [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]

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

排序(1) 氣泡排序

排序演算法是經久不衰的經典入門演算法,一般認為是,給定一組數,給出從小到大排序的結果。主要演算法有 選擇,插入,冒泡,歸併,希爾,基數,快速,桶排序等等。每種排序有其自身的特性,適合不同的場景。分析排序演算法主要從3個方面 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素做同樣...

排序 1 氣泡排序

目錄 1.什麼是氣泡排序 2.氣泡排序的關鍵點 3.氣泡排序應用 假設待排序列為9 6 4 2 7 8 5 3 1,要求是讓待排序列按遞增順序排列。氣泡排序就是對待排序列掃瞄一次,就可以使得最大的9就位。具體過程排序過程是 先9和6比較,比6大所以位置互換得到6 9 4 2 7 8 5 3 1,然後...

1 氣泡排序

氣泡排序 這裡採用公升序排序 是不斷比較臨近的兩個元素大小,若出現兩個元素為降序的 l i l i 1 則交換兩者的值。把最最小值冒泡至前面 根據判斷條件不同而不同 迴圈結束後,則是排序好的序列。我寫的程式是 每次都用前面的元素和後面的元素比較,若出現降序則交換。所以冒泡方式是,小的往前面移動。例如...