数组排序

//方法1
    // 数组中前一项跟后一项作比较,如果前边的比后边的大,则前后换一下位置
    function px1(ary){
        var len=ary.length,temp;
        if(len<=1){
            return ary;
        }
        for(var i=0;i<len;i++){
            for(var j=i+1;j<len;j++){
                if(ary[i]>ary[j]){
                    temp=ary[i];
                    ary[i]=ary[j];
                    ary[j]=temp;
                }
            }
        }
        return ary;
    }
    var ary1=[3,1,8,6,9,0,12];
    console.log(px1(ary1));
    //方法2 取出数组的中间值
    // 将数组中的每一项跟中间值midVal作比较
    // 比midVal小的放left数组中,比midVal大的放到right数组中,以此循环 然后再将数组拼接
    function px2(ary){
        if(ary.length <= 1){
            return ary;
        }
        var midIndex=Math.floor(ary.length/2),
            midVal=ary.splice(midIndex,1),
            left=[],
            right=[];
        for(var i=0;i<ary.length;i++){
            if(ary[i] < midVal){
                left.push(ary[i]);
            }else{
                right.push(ary[i]);
            }
        }
        return px2(left).concat(midVal,px2(right));
    }
    var ary2=[3,1,8,6,9,0,12];
    console.log(px2(ary2));
数组排序

相关文章: