function bubbleSort(arr) {
// 设置是否有交换过的变量
let swapped = false
// 1. 对整个数组的循环
for (let i = 0; i < arr.length; i++) {
// 2. 对当前元素找比他小的元素,从0到len-1-i,因为最后面都是大的,不用看了
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
// 3. 如果有比当前元素小的,交换2个元素(利用解构赋值)
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]
// 只要有交换(冒泡)标志置为true
swapped = true
}
}
// 如果一次循环没有交换(冒泡),说明排序结束,直接退出
if (!swapped) {
break
}
}
return arr
}
const arr = [2, 3, 41, 1, 6, 53, 4, 6, 87, 4]
const res = bubbleSort(arr)
console.log(res)
console