在参加一次面试的时候,有家公司问了快速排序的问题,可是一脸蒙蔽,只知道冒泡排序,快速排序是一点不知道,如今作下记录。面试
先写个冒泡排序的例子:排序
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次效率确实快了不少