美文网首页
数组排序

数组排序

作者: 追马的时间种草 | 来源:发表于2019-11-23 14:40 被阅读0次

    冒泡排序

    • 原理:让数组当前项后后一项比较,如果当前项大于后一项,就让两者换位置(从小到大),每一轮前后两两比较,每次比较会把大者放到:末尾
    • 具体比较轮数:ary.length-1,每一轮比较次数ary.length-1
    /**
        bubble:冒泡排序
        @parameter
            ary:[array] 需要排序的数组
        @return
            [array]:排序后的数r组
    */
    var ary=[12,13,23,14,16,11] 
    function bubble(ary){
        //=>外层控制的是要比较的轮数
        for(var i=0; i<ary.length-1; i++){
            //=>内层循环控制的是每轮比较的次数
            for(var j=0;j=ary.length-1-i;j++){
                //ary[j]前一项数值
                //ary[j+1]后一项数值
                if(ary[j]>ary[j+1]){
                    //前一项与后一项交换位置
                    var temp=ary[j]
                    ary[j]=ary[j+1]
                    ary[j+1]=temp
                }
            }
        }
        return ary
    }
    babble(ary)//
    

    插入排序

    • 将每一项理解为扑克牌,拿桌子上的一张牌与手里的牌比较,将值大的放在值小的后边
    //对象数组排序
    function(ary){
        var handleAry=[];//手
        handleAry.push(ary[0]);//先放在手里一张牌
        for(var i=1;i<ary.length;i++){
            var item=ary[i];//拿桌子上的一张牌,从头开始拿
            for(var j=handAry.length-1;j>=0;j--){//循环手里的牌,从后往前循环
                if(itme>handAry[j]){//拿桌子上的牌与手里的牌比较。
                    handAry.splice(j+1,0,item);//如果桌子上的牌比手里的大,那就放在手里的牌的后边
                    break;
                }
                if(j===0){
                    //新抓到牌是最小的,我们把新抓的牌放在最开始的位置
                    handleAry.unshift(item)
                }
            }        
        }
        return handAry;
    }
    insert(ary)
    

    sort()排序

    • 数组方法,可数组升序、降序,多维数组排序等,亦可对象数组排序
      var arr = [
                { name:"小明", age:12 },
                { name:"小红", age:11 },
                { name:"小刚", age:15 },
                { name:"小华", age:13 }
            ];
            
      function compare(p){ //这是比较函数
            return function(m,n){
                var a = m[p];
                var b = n[p];
                return a - b; //升序
            }
      }
        arr.sort(compare("age"));
        console.log(arr); 
        //结果如下: 
        //[{name: "小红", age: 11}, 
        //{name: "小明", age: 12},
        //{name: "小华", age: 13}, 
        //{name: "小刚", age: 15}]
    
    
    //数组降序
    var arr = [2,3,13,17,4,19,1];
    arr.sort(function(a,b){ // 这是比较函数
        return b - a;    // 降序
    })
    console.log(arr) // 结果:[19, 17, 13, 4, 3, 2, 1]
    

    相关文章

      网友评论

          本文标题:数组排序

          本文链接:https://www.haomeiwen.com/subject/amjhwctx.html