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]));
快速排序先找个基准点,小于基准点放在左边,大于基准点放在右边。下次排序的时候在左边找基准点以此类推。