氣泡排序:
思路:先找到最大值放到最右邊:
#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迴圈則是確定迴圈輪數 ...