#隨機數列a=[
5,8,
6,3,
9,2,
1,7]
#一、雙迴圈實現氣泡排序
#外環控制回合
for i in
range
(len
(a)-1)
:#內環實現冒泡處理:每一輪會把最大值冒泡至最後
for j in
range
(len
(a)-
1-i):if
(a[j]
>a[j+1]
):n=a[j]
a[j]
=a[j+1]
a[j+1]
=nprint
(a)#二、氣泡排序的優化,每輪排序後判斷是否有序a=[
5,8,
6,3,
9,2,
1,7]
#外環控制回合
for i in
range
(len
(a)-1)
: issorted =
true
#內環實現冒泡處理:每一輪會把最大值冒泡至最後
for j in
range
(len
(a)-
1-i):if
(a[j]
>a[j+1]
):n=a[j]
a[j]
=a[j+1]
a[j+1]
=n issorted=
false
if(issorted)
:break
print
(a)#三、氣泡排序的進一步優化,界定有序區,對有序區不再比較a=[
3,4,
2,1,
5,6,
7,8]
#最後一次交換的 位置
lastexchangeindex=
0#無序數列的邊界
sortboarder=
len(a)-1
#外環控制回合
for i in
range
(len
(a)-1)
: issorted =
true
#內環實現冒泡處理:每一輪會把最大值冒泡至最後
for j in
range
(sortboarder):if
(a[j]
>a[j+1]
):n=a[j]
a[j]
=a[j+1]
a[j+1]
=n issorted=
false
lastexchangeindex=j
sortboarder=lastexchangeindex
if(issorted)
:break
print
(a)
資料結構 排序之氣泡排序
資料結構 排序 可以通過理解各個排序演算法的不變性來加深對演算法的理解 氣泡排序bubblesort 不變性 out右邊的所有資料項都是有序的。out為outer loop外迴圈體中的變數。the point for out arrlen 1 out 1 out the code public cl...
資料結構之排序 氣泡排序
簡介 氣泡排序屬於交換排序的一種。交換排序就是根據序列中兩個元素關鍵字的比較結果來對換這兩個記錄在序列中的位置。交換排序的演算法有很多,著重需要掌握的有氣泡排序和快速排序。基本思想 長為n的序列表,從前往後 或從後往前 兩兩比較相鄰元素的值,若為逆序,則交換他們,知道所有序列比較完。每一趟冒泡都會將...
資料結構之氣泡排序
2.編寫乙個氣泡排序的演算法,並且在main函式中驗證其功能已實現 氣泡排序 bubble sort 的基本思想,設想排序r 1 到r n 垂直放置,將記錄 r i 看作是重量為r i key的氣泡 根據氣泡不能在重氣泡之下的原則,從下往 上掃瞄陣列r,凡違反原則的輕氣泡,就使其向上 飄浮 如此反覆...