關於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次效率確實快了不少
相關文章
相關標籤/搜索