【算法】js冒泡排序

136 阅读1分钟
function sort(arr) {
    for (let i = 0; i < arr.length - 1; i ++) {
        for (let j = 0; j < arr.length - 1 - i; j ++) {
            if (arr[j] > arr[j + 1]) {
                [ arr[j + 1], arr[j] ] = [ arr[j], arr[j + 1] ] 
            }
        }
    }
}

从小到大 a>b 每循环一圈都把最大的找出来放后边

从大到小 a<b 每循环一圈都把最小的找出来放后边

arr[j], arr[j + 1] 要在数组长度内比较 i < arr.length - 1

每循环一圈后找到了这圈的最值,下次循环就不用和最值对比,减少比对次数
i < arr.length - 1 - x

图解:

1、第一圈循环第一轮排序,比对4次

2、第二圈,比对3次

3、第三圈,比对2次

4、第四圈,比对1次

5、第五圈无需比对,已在第四圈排好序了