// 思路
// 用两层循环 外层控制冒泡终点位置
// 因为每次冒泡完都会将最大/小值放到末尾 不用参与排序 因此排除在外
// 里层循环控制单趟排序 相邻元素两两对比交换
function fn(list) {
let len = list.length
// 注意 是<len-1 而不是<len 因为是当前元素和后一位对比 因此只取到末尾元素的前一个
for (let j = 0; j < len - 1; j++) {
for (let k = 0; k < len - 1 - j; k++) {
if (list[k] > list[k + 1]) {
[list[k], list[k + 1]] = [list[k + 1], list[k]]
}
}
}
}
// 验证
let list = [34, 8, 64, 51, 32, 21]
fn(list)
console.log('冒泡排序:' + list) // 8,21,32,34,51,64