SOURCE

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 命令行工具 X clear

                    
>
console