冒泡排序思路

内层循环

i<arr.length - 1 因为排序的最后一个不用再循环比较

    for (var i = 0; i < arr.length - 1; i++) {
        // 比较 arr[i]和 arr[i+1]
        // 位置不对,就交换
        if (arr[i] > arr[i + 1]) {
            var temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
        }
    }

加上外层循环

for (var j = 1; j < arr.length; j++) {
    for (var i = 0; i < arr.length - j; i++) {
        // 比较 arr[i]和 arr[i+1]
        // 位置不对,就交换
        if (arr[i] > arr[i + 1]) {
            var temp = arr[i];
            arr[i] = arr[i + 1];
            arr[i + 1] = temp;
        }
    }
}

i<arr.length - j为找到的规律,优化后写法。
第一轮冒泡排序后放到第一位的不再进行比较,
第二轮冒泡排序后放到第二位的不再进行比较,
以此类推……

猜你喜欢

转载自blog.csdn.net/weixin_47067248/article/details/107508875