关于JS快速排序

在参加一次面试的时候,有家公司问了快速排序的问题,但是一脸蒙蔽,只知道冒泡排序,快速排序是一点不知道,现在做下记录。

先写个冒泡排序的例子:

var arr=[11,56,66,32,51,39,12];
var times=0
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]<arr[j]){
var temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}

console.log("第"+(++times)+"次排序后:"+arr);
}
}
console.log(arr);
 
上面的代码执行了21次。
 
function ss (arr){
if(arr.length<=1){
return arr ;
}

var arrIndex=Math.floor(arr.length/2);
var arrIndexNum=arr.splice(arrIndex,1);
var arrLeft=[];
var arrRight=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<arrIndexNum){
arrLeft.push(arr[i]);
}else{
arrRight.push(arr[i])
}
console.log("第"+(++times)+"次排序后:"+arr);
}

return ss(arrLeft).concat(arrIndexNum,ss(arrRight))
}

console.log(ss(arr));
执行了11次效率确实快了很多
 

猜你喜欢

转载自www.cnblogs.com/drizzle-wen/p/8858653.html
今日推荐