冒泡排序
實現(xiàn)思路
依次比較相鄰的兩個數(shù),如果不符合排序規(guī)則紧索,則調換兩個數(shù)的位置袁辈。這樣一遍比較下來,能夠保證最大(或最兄槠)的數(shù)排在最后一位晚缩。
1每次比較相鄰的兩個數(shù),符合規(guī)則(前一位 > 后一位)就調換兩個數(shù)的位置(判斷 > 調換位置)
2通過第一步把最大的一位數(shù)排在最后一位(最后的一位數(shù)排序完畢)
3最后一位已經(jīng)排序完畢遂排除媳危,對剩余未排序的數(shù)重復上面步驟直至排序完成
排序設計
1判斷荞彼、調換位置
function swap(myArr, p1, p2) {
var temp = myArr[p1]
myArr[p1] = myArr[p2]
myArr[p2] = temp
}
2排序循環(huán)
function bubbleSort(myArr) {
var len = myArr.length
var stop // 設置已排序與未排序的位置
var i
var j // 設置for循環(huán)遍歷次數(shù)的變量, 防止混淆
for(i = 0; i < len - 1; i ++) { // 第i遍循環(huán)數(shù)組排序
for(j = 0; j < len - 1 - i; j ++) { // 檢查數(shù)組每個數(shù),已排序完畢的則不進行重新排序
if(myArr[j] > myArr[j + 1]) {
swap(myArr, j, j + 1)
}
}
}
return myArr
}
選擇排序
實現(xiàn)思路
1每次假設剩余未比較的數(shù)組里的第一位為最小值
2將假設的最小值與其余數(shù)值比較找出最小值
3比較完畢后將最小值置為第一位
排序設計
1判斷待笑、調換位置
function swap(myArr, p1, p2) {
var temp = myArr[p1]
myArr[p1] = myArr[p2]
myArr[p2] = temp
}
2排序循環(huán)
function selectionSort(myArr) {
var len = myArr.length
var min
for(i = 0; i < len - 1; i++) {
min = i
for(j = i + 1; j < len; j++) {
if(myArr[j] < myArr[i]) {
min = j
}
}
if(i != min) {
swap(myArr, i, min)
}
}
return myArr
}