氣泡排序
- 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
- 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。
- 針對所有的元素重複以上的步驟,除了最後一個。
- 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。
氣泡排序流程圖
虛擬碼
a <- {
'0':4,
'1':6,
'2':3,
'3':2,
'4':1,
'length': 5
}
輪數 = 1
左手指向的下標
while(輪數 < a['length'])
左標 = 0
while(左標 <= a['length'] - 1 - 輪數)
if a[左下標] < a[左下標+1]
else
t <- a[左標]
a[左標] <- a[左標+1]
a[左標+1] <- t
end
左標 <- 左標+1
end
輪數 <- 輪數 + 1
end
print a
複製程式碼
選擇排序
工作原理: 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
選擇排序流程圖
虛擬碼
a<-{
'0'=4,
'1'=6,
'2'=3,
'3'=2,
'4'=1,
'length'=5
}
輪數=1
while(輪數<a['length'])
min左標<-輪數-1;左標<-min左標+1
while(左標<a['length'])
if a[左標]<a[min左標]
a[min左標]<-a[左標]
else
什麼也不做
end
左標<-左標+1
end
t<-a[輪數-1]
a[輪數-1]<-a[min左標]
a[min左標]<-t
輪數<-輪數+1
end
print a複製程式碼