冒泡排序
k == 0 第 1 次循环 确定了 [8] 的值
k == 1 第 2 次循环 确定了 [7][8] 的值
k == 2 第 3 次循环 确定了 [6][7][8] 的值
k == 3 第 4 次循环 确定了 [5][6][7][8] 的值
k == 4 第 5 次循环 确定了 [4][5][6][7][8] 的值
k == 5 第 6 次循环 确定了 [3][4][5][6][7][8] 的值
k == 6 第 7 次循环 确定了 [2][3][4][5][6][7][8] 的值
k == 7 第 8 次循环 确定了 [1][2][3][4][5][6][7][8] 的值
k == 8 第 9 次循环 确定了 [0][1][2][3][4][5][6][7][8] 的值
Eg:
var arr = [10, 20, 30, 40, 50]
var n = 11
console.log('before:', arr)
// 提取arr所有值,包括下标
for (var k = 0
// 查看过程
console.log(`这是第 ${k + 1} 轮循环(k == ${k})`)
// 提取arr所有值,包括下标
for (var i = 0
// console.log(arr[i], arr[i + 1])
// 判断两值之间的谁大谁小
if (arr[i] > arr[i + 1]) {
// 数值交换
var temp = arr[i]
arr[i] = arr[i + 1]
arr[i + 1] = temp
}
}
}
console.log('after:',arr)
选择排序
第几次循环 假设谁是最小值 和谁交换 循环开始的值
k == 0 1 0 0 1
k == 1 2 1 1 2
k == 2 3 2 2 3
Eg:
var arr = [1, 0, 9, 0, 3, 8, 3, 1, 9, 8]
console.log('before:', arr)
// 提取arr所有值,包括下标
for (var i = 0
// 存储 i 的值(从 0 开始 ++),以此作为最小值的下标
var minNum = i
// 判断两值之间的谁大谁小
for (var j = i + 1
// 如果最小下标的值 大于 下一个下标的值
if (arr[minNum] > arr[j]) {
// 交换下标
minNum = j
}
// 交换最小值到 minNum
var temp = arr[i]
arr[i] = arr[minNum]
arr[minNum] = temp
}
}
console.log('after:',arr)