算法:观察执行过程,找到规律,转为代码。
// 冒泡排序
// var arr = [5, 4, 3, 2, 1];
var arr = [4, 1, 2, 3, 5];
// 外层循环管趟数 【5个元素,冒泡排序4趟,应该是arr.length - 2,结果一样】
for (var i = 0; i <= arr.length - 1; i++) {
for (var j = 0; j <= arr.length - i - 1; j++) { // 里面的循环管 每一趟的交换次数
// 内部交换2个变量的值 前一个和后面一个数组元素相比较
if (arr[j] < arr[j + 1]) {
// [arr[j], arr[j+1]] = [arr[j+1], arr[j]] // 利用解构
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
console.log(i);
}
console.log(arr);
// 我的写法1
var arr = [4, 1, 9, 2, 7, 3, 5];
var len = arr.length;
// i <= len - 2,i <= len - 1,结果都一样
for (var i = 0; i <= len - 2; i++) {
for (j = 0; j <= len - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr); // [1, 2, 3, 4, 5, 7, 9]
// 我的写法2
var arr = [4, 1, 9, 2, 7, 3, 5];
var len = arr.length;
for (var i = 0; i < len; i++) {
var temp;
for (var j = i; j < len; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
console.log(arr); // [1, 2, 3, 4, 5, 7, 9]