插入排序

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已经移动到正确位置 所以跳出循环