内层循环
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为找到的规律,优化后写法。
第一轮冒泡排序后放到第一位的不再进行比较,
第二轮冒泡排序后放到第二位的不再进行比较,
以此类推……