dayDif() {
var a = [
3, 11, 19, 14, 9, 19, 43, 432432, 43234, 231, 321321, 323, 54, 546,
];
效率最低的
// for (let i = 0; i < a.length; i++) {
// for (let j = 0; j < a.length; j++) {
// console.log(this.num++, 196);
// if (a[j] > a[j + 1]) {
// [a[j], a[j + 1]] = [a[j + 1], a[j]];
// //console.log(this.num++);
// }
// }
// }
效率和下面差不多
// for (let i = a.length - 1; i >= 0; i--) {
// //外层控制的是执行的次数以及内层的j最大值
// for (let j = 0; j <= i; j++) {
// //每一躺从0到j
// console.log(this.num++,105);
// if (a[j] > a[j + 1]) {
// [a[j], a[j + 1]] = [a[j + 1], a[j]];
// }
// }
// }
和上面差不多
// for (let i = 0; i < a.length - 1; i++) {
// let indexMin = i;
// for (let j = i; j < a.length; j++) {
// console.log(this.num++,104);
// // 如果当前这个元素 小于最小值的下标 就更新最小值的下标
// if (a[j] < a[indexMin]) {
// indexMin = j;
// }
// }
// // 避免自己和自己进行交换
// if (indexMin !== i) {
// // 进行交换数据
// [a[i], a[indexMin]] = [a[indexMin], a[i]];
// }
// }
//插入排序 从第二个数,开始往前比较 如它大就往后排 以此类推进行到最后一个数
for (let i = 1; i < a.length; i++) {
// 获取第二个元素
const temp = a[i];
let j = i;
while (j > 0) {
console.log(this.num++, 32);
// 如果当前元素小于前一个元素 就开始往后移动
if (a[j - 1] > temp) {
a[j] = a[j - 1];
} else {
// 否则就跳出循环
break;
}
// 递减
j--;
}
// 前一位置赋值为当前元素
a[j] = temp;
}
console.log(a);
},