js快速排序

function quicksort(arr){
  //如果数组只有一位数直接返回
    if(arr.length<=1){
       
          return arr;

    }
    //找中间那位数
    var num=Math.floor(arr.length/2);
   //找中间那位数的值并截取出来
    var numValue=arr.splice(num,1);
    var left=[];//存左边的值
    var right=[];//存右边的值

     for(var i=0;i<arr.length;i++){
          //数组每一个和基准点比较
          if(arr[i]<numValue){
           
                left.push(arr[i]);

            }else{
       
               right.push(arr[i]);
            }
     }
     //利用递归原理进行下一次排序
     return quicksort(left).concat([numValue],quicksort(right));
}
alert(quicksort([22,44,2,4,58,54,100,10]));

 

快速排序先找个基准点,小于基准点放在左边,大于基准点放在右边。下次排序的时候在左边找基准点以此类推。

 

posted @ 2017-03-20 18:42  小慕白  阅读(155)  评论(0编辑  收藏  举报