快速排序原理
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