插入排序
var sort = function (arr) {
var flag = 0;
for (let i = 1; i < arr.length; i++) {
if (arr[i] < arr[i - 1]) {
flag = arr[i];
for (let j = i; j >= 0; j--) {
if (flag < arr[j - 1]) {
arr[j] = arr[j - 1];
arr[j - 1] = flag;
} else {
break;
}
}
}
}
return arr;
}
var list = [1,4,3,5,2];
console.log(sort(list));
[ 1, 4, 3, 5, 2 ]
[ 1, 3, 4, 5, 2 ]
[ 1, 3, 4, 5, 2 ]
[ 1, 2, 3, 4, 5 ]
1.第一次循环
4 与 1 进行比较 4>1 没有进入判断
2.第二次循环
3 与 4 进行比较 3<4
将当前循环位置的值赋给 flag 也就是flag = 3
进入第二层循环
这时 将 已经排序的[1,4] 倒序循环 与 flag进行比较 然后替换变量
当flag > 倒序比较的变量时,说明flag已经移动到正确位置 所以跳出循环
3.第三次循环
5 与 4 进行比较 5>4 没有进入判断
4.第四次循环
2 与 5 进行比较 2<5
将当前循环位置的值赋给 flag 也就是flag = 2
进入第二层循环
这时 将 已经排序的[1,3,4,5] 倒序循环 与 flag进行比较 然后替换变量
当flag > 倒序比较的变量时,说明flag已经移动到正确位置 所以跳出循环
最后一次更新于2020-05-12
0 条评论