插入排序

/**
     * 插入排序
     * 思想:每插入新的一项 都会和当前数组作比较,如果当前值大于数组最后一项,则插入到最后,否则排入前一项
     * 
     * 步骤 *(从小到大,从大到小把内部判断语句修改即可)
     * 1.新建空数组
     * 2.新数组添加原数组第一项
     * 3.最外层循环原数组,从1开始,这是为了和新数组第一项作比较
     * 4.声明当前值,为了和新数组的值作比较
     * 5.嵌套循环 循环的值为新数组,demo.length -1 从最大开始比较 
     * 6.如果外层变量news 大于 新数组old 则新数组存入该值 并且跳出该循环,继续下一项
     * 7.如果内层循环到最后都没有满足该要求,则 存入首位 说明外层变量news最小
     * 8.依次循环,直到retuen
     */

    //  demo = [10] 

    let arr = [10,9,8,15,14,12,99,50];
    function setArr(arr){
        let demo = [];
        demo.push(arr[0]);
        for(let i =1;i< arr.length; i++){
            let news = arr[i];
            for(let j = demo.length -1;j>=0;j--){
                let old = demo[j];
                
                console.log('当前循环次数',i,'原数组当前值',news,'新数组循环次数',j,'新数组当前末尾值',old)
                if(news > old){
                    demo.splice(j+1,0,news);
                    break;
                }
                if(j === 0){
                    demo.unshift(news)
                }
            }
            console.log(i,demo)
        }
        return demo
    }
    setArr(arr)
原文地址:https://www.cnblogs.com/zhaozhenghao/p/14266653.html