快速排序原理

var arr=[5,2,4,7,6,3,1,0,8];

function quickSort(arr){
    if(arr.length<=1){
        return arr;
    }
    var baseInex=Math.floor(arr.length/2);
    var base=arr.splice(baseInex,1);
    var left=[];
    var right=[];
    for(var i=0;i<arr.length;i++){

        if(arr[i]<base){
            left.push(arr[i])
        }else{
            right.push(arr[i])
        }
    }

    return quickSort(left).concat([base],quickSort(right));}
 
    alert(quickSort(arr));
    递归过程:
    “+”看作concat()
    quickSort([1,2,3,4,5])+[6]+quickSort([7,8,9]);
quickSort([1,2])+[3]+quickSort([4,5])+[6]+quickSort([7])+[8]+quickSort([9]);
quickSort([])+[1]+quickSort([2])+[3]+quickSort([])+[4]+quickSort([5])+[6]+[7]+[8]+[9]
[]+[1]+[2]+[3]+[]+4+[5]+[6]+[7]+[8]+[9]

原文地址:http://www.ruanyifeng.com/blog/2011/04/quicksort_in_javascript.html 

 

posted @ 2015-08-26 10:36  韭菜茄子  阅读(173)  评论(0编辑  收藏  举报