数组排序

102 阅读1分钟

//冒泡排序

function quickSort(arr){
    for(var i=0; i<arr.length-1; i++){
        console.log(i);
        for(var j=0; j<arr.length-i-1; j++){
            
            if(arr[j] > arr[j+1]){
                
                var oldVal = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = oldVal;
            }
        }
        
    }
}
//二分法排序
function quickSort(arr){
    if(arr.length<=1){
        return arr;
    }
    var nowNober = arr.splice( Math.floor(arr.length/2), 1 );  //取得数组中间的值
    var leftArr = [];
    var reightArr = [];
    for(var i=0; i<arr.length; i++){
        if(parseInt(arr[i])<=nowNober){
            leftArr.push(arr[i]);                              //把比中间值小的放一个数组
        }else{
            reightArr.push(arr[i]);                            //把比中间值大的放另一个数组
        }
    }
    return quickSort(leftArr).concat(nowNober,quickSort(reightArr))  
   //在对小数组 、 大数组 继续回调上面的分组方法,最后当数组长度只有一的时候,不再往下执行,把返回的单个数组层层拼装新数组,即最后返回的排序好的数组
}