python複習氣泡排序

2022-06-11 05:27:12 字數 1818 閱讀 5459

氣泡排序:

思路:先找到最大值放到最右邊:

#encoding=utf-8

a=[1,9,2,8,3,6,4]

print "a before change:",a

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

if a[i] > a[i+1]:

a[i],a[i+1] = a[i+1],a[i]

print "a after change:",a

結果:d:\>python test.py

a before change: [1, 9, 2, 8, 3, 6, 4]

a after change: [1, 2, 8, 3, 6, 4, 9]

找到最大值了,第二步找到次大值放到倒數第二個位置

#encoding=utf-8

a= [1, 2, 8, 3, 6, 4, 9]

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

if a[i] > a[i+1]:

a[i],a[i+1] = a[i+1],a[i]

print "a after change:",a

結果:  

d:\>python test.py

a before change: [1, 2, 8, 3, 6, 4, 9]

a after change: [1, 2, 3, 6, 4, 8, 9]

找到倒數第二大的值了

第三步找到倒數第三大的數放到倒數第三個位置

a=[1, 2, 3, 6, 4, 8, 9]

print "a before change:",a

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

if a[i] > a[i+1]:

a[i],a[i+1] = a[i+1],a[i]

print "a after change:",a

結果:d:\>python test.py

a before change: [1, 2, 3, 6, 4, 8, 9]

a after change: [1, 2, 3, 4, 6, 8, 9]

依次類推,最後可以把整個列表排好序

從整體的過程來看,每次迴圈做的事情基本一樣,從左到右依次用當前位置的數和

後邊的數做比較,如果前邊的數大,就把兩個數換位置,迴圈結束後可以得到所迴圈的樹中最大的數

每一次迴圈不一樣的是迴圈所遍歷資料長度都比上一次少乙個,一共需要迴圈的次數是列表a的長度,那麼把這六次迴圈寫到一起就可以變成兩層迴圈

外邊的迴圈控制迴圈的次數即6次,i的變化值是0,1,2,3,4,5,即range(len(a)-1)

裡邊的迴圈控制每次迴圈的長度,每次長度減少1,j

變化值是6次,5次,4次,3次,2次,1次,即每次為range(len(a)-i-1)次

迴圈每次做的事情不動改變

即:#encoding=utf-8

a=[1,9,2,8,3,6,4]

print "a before change:",a

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

for j in range(len(a)-i-1):

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

a[j],a[j+1] = a[j+1],a[j]

print "a after change:",a

結果:d:\>python test.py

a before change: [1, 9, 2, 8, 3, 6, 4]

a after change: [1, 2, 3, 4, 6, 8, 9]

氣泡排序複習

1.首先搜看一下氣泡排序的gif動態圖 2.自己再拋開動態圖,在白紙上畫一遍 原始待排序陣列 7 2 3 1 4 第一趟排序 外迴圈 第一次兩兩比較7 2交換 內迴圈 交換前狀態 7 2 3 1 4 交換後狀態 2 7 3 1 4 第二次兩兩比較,7 3交換 內迴圈 交換前狀態 2 7 3 1 4 ...

排序演算法複習 氣泡排序

氣泡排序基本思想 兩兩比較相鄰資料,如果反序則交換資料,直到沒有反序為止。冒泡 較小的數 較大的數 如同氣泡般慢慢浮到上面,因此命名氣泡排序,氣泡排序。還是 看著直觀,如下 int a int n sizeof a sizeof int inti,j,temp bool exchange true ...

複習 冒泡,快速 排序

氣泡排序是面試最基礎的內容一定要會 氣泡排序的思想 對於一組陣列 針對從大到小 每次迴圈乙個乙個比較找到乙個最大的數放置末尾,後一次迴圈的數個數將會比前一次少1,因為已經確定了乙個數的位置,以此下去將會排完所有資料。來張圖看把清楚點 氣泡排序通常使用兩個for迴圈 第乙個for迴圈則是確定迴圈輪數 ...