氣泡排序key:避免與選擇排序混淆,氣泡排序特有的是,兩兩進行比較。
list=[4,3,1,2,5]
n=len(list)
for i in range(0,n):
for j in range(0,n-i-1):
print('當前j=%d'%(j))
print('j要迴圈的次數為%d,這是第%d次迴圈'%(n-i-1,j+1))
print('比較%d>%d'%(list[j],list[j+1]))
if list[j]>list[j+1]:
list[j],list[j+1]=list[j+1],list[j]
print(list)
else:
print('不滿足')
print('當前排序',list)
print('\n')
print('排序結束')
result:
當前j=0
j要迴圈的次數為4,這是第1次迴圈
比較4>3
[3, 4, 1, 2, 5]
當前j=1
j要迴圈的次數為4,這是第2次迴圈
比較4>1
[3, 1, 4, 2, 5]
當前j=2
j要迴圈的次數為4,這是第3次迴圈
比較4>2
[3, 1, 2, 4, 5]
當前j=3
j要迴圈的次數為4,這是第4次迴圈
比較4>5
不滿足當前排序 [3, 1, 2, 4, 5]
當前j=0
j要迴圈的次數為3,這是第1次迴圈
比較3>1
[1, 3, 2, 4, 5]
當前j=1
j要迴圈的次數為3,這是第2次迴圈
比較3>2
[1, 2, 3, 4, 5]
當前j=2
j要迴圈的次數為3,這是第3次迴圈
比較3>4
不滿足當前排序 [1, 2, 3, 4, 5]
當前j=0
j要迴圈的次數為2,這是第1次迴圈
比較1>2
不滿足當前j=1
j要迴圈的次數為2,這是第2次迴圈
比較2>3
不滿足當前排序 [1, 2, 3, 4, 5]
當前j=0
j要迴圈的次數為1,這是第1次迴圈
比較1>2
不滿足當前排序 [1, 2, 3, 4, 5]
當前排序 [1, 2, 3, 4, 5]
排序結束
對雙層for迴圈的理解也有幫助。
n-i-1:這裡是因為一次迴圈過後,已經排序出了乙個確定的位置,例如[x,x,x,x,5] 已經確定乙個5,所以只需要比較前4個,以此類推。
經典排序之氣泡排序
邊學習邊記載。氣泡排序是經典排序之一,時間複雜度是o n 2 以如下陣列為例 陣列 5 6 3 1 8 7 2 4,以從小到大排序為例 i表示陣列下標,初始化為0 5 6 3 1 8 7 2 4 第一輪是從0到n 1比較,n為陣列的長度 1 首先i 0 比較5,6,由於5 6,所以保持不變 2 i ...
經典排序之氣泡排序
關於排序,是我們經常用到的。目前,就我了解的,應該有 氣泡排序 選擇排序 希爾排序 折半排序 快速排序 堆排序 桶排序 歸併排序 基數排序 其實還有很多,慢慢來吧乙個乙個總結一下,希望在鞏固自己的同時也能夠幫到大家 氣泡排序的原理 以公升序舉例 氣泡排序就是從第乙個數開始和後乙個數比較 如果如果前者...
經典排序之氣泡排序
1.i 0被定為第乙個,後面逐漸比較這個值 1位置,2位置,知道 n 1 位置,第一輪排序結束,最小值被最先固定,開始第二輪,i 在於後面的值進行比較,輪迴往復,直到i n 1,迴圈結束。注 這樣的好處是,最小值被最先固定。public static int bubblesort int arr r...