Python氣泡排序(2)

2022-07-22 08:24:12 字數 3988 閱讀 4336

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

python**:

"""

氣泡排序(2)

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

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

本例中:

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

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

......

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

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

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

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

......

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

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

......

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

......

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

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

if lst[i] >lst[j]:

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

print("

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

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

else

:

print("

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

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

print("

\r\n排序後: %s

" % lst)

輸出結果:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

氣泡排序2

氣泡排序 一組數中,相鄰的兩個數進行比較 交換,將最大 小 數交換至尾 首 部,即完成了一次氣泡排序 要想對n個數字進行排序,迴圈n次即可.如果真的不理解氣泡排序演算法,氣泡排序 360百科 主要 方式一 從頭向尾遍歷,將最大數 相對 沉入尾部 void bubblesort1 int arr,in...

2 氣泡排序

氣泡排序思想 氣泡排序 bubble sort 通過對排序序列從前到後依此比較相鄰元素的大小,發現逆序則交換,使值較大的元素逐漸向後移動。public class bubblesort 用來交換 int temp 0 boolean flag false 標識每一趟是否排序 for int i 0 ...

氣泡排序2

氣泡排序 一組數中,相鄰的兩個數進行比較 交換,將最大 小 數交換至尾 首 部,即完成了一次氣泡排序 要想對n個數字進行排序,迴圈n次即可.如果真的不理解氣泡排序演算法,氣泡排序 360百科 主要 方式一 從頭向尾遍歷,將最大數 相對 沉入尾部 void bubblesort1 int arr,in...