var arr = [1, 7, 9, 4, 10]
// 外层循环 i < arr.length - 1 5个数,比较4轮(0,1,2,3)
//外层次数(i < arr.length - 1) j交换次数(j < arr.length - 1 - i)
// 第0轮 4
// 第1轮 3
// 第2轮 2
// 第3轮 1
for (var i = 0; i < arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
//内层循环 每轮循环固定一位数 arr.length - 1 - i
if (arr[j] > arr[j + 1]) {
var temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
//Es6 写法,交换两个变量
//[arr[ j ],arr[ j + 1 ]] = [arr [ j + 1],arr[ j ]]
}
}
}
console.log(arr); // [1, 4, 7, 9, 10]
// 怎么理解内层循环的 - i; 每轮之后, 都固定了一个最大的数到最后面
// 理解 :
// i变量 : 我们可以把i变量理解为已经排号的个数。
// 外层循环:控制需要比较多少轮。 arr.length - 1 5个数,比较4轮。
// 内层循环:控制每轮交换的次数。 arr.length - 1 - i ; 就是外层每走一轮,就确定好一个数。
// 内层循环里写交换两个变量