一道小题233,不稳定排序,平均时间复杂度O(nlogn),最坏复杂度O(n^2);
代码(直接cp到控制台就行)
function quicksort(arr)
{
if(arr.length<=1)
return arr;
var mid=Math.floor((arr.length-1)/2);
var midval=arr.splice(mid,1);//注意这里返回数组中间值的同时,又把中间值拿出去
var left=[];
var right=[];
for(var i=0;i<arr.length;i++)
{
if(arr[i]<midval)
left.push(arr[i]);
else
right.push(arr[i]);
}
return quicksort(left).concat(midval,quicksort(right));//递归求解
}
arr=[1,2,3,5,56,2,2,4,5,6,7,4,2,7,9];
var res=quicksort(arr);