最近面试被问到冒泡排序和快速排序,要求现场手撕代码。
原理我都懂,可是sort()方法用爽了,怎么会去研究原生js的实现呢!好吧,既然面试官要问,我就写!!
一.冒泡排序
function aryList(arry){
this. bubbleSort=function(){
var len=arry.length;
for(var i=0;iarry[j+1]){
swap(j,j+1);
}
}
}
return arry;
}
var swap=function(i,j){
var temp=arry[i];
arry[i]=arry[j];
arry[j]=temp;
}
}
var array=new aryList([19,16,14,12,5,6,9,8,7,4,3]);
var result=array.bubbleSort();
console.log(result);
Chrome下的测试结果:

image.png
二.快速排序
找出数组的中间值,然后定义两个数组分别存放比中间值小和比中间值大的数,最后把它们拼接起来。
function quikSort(arr){
if(arr.length<=1){
return arr;
}
var midIndex=Math.floor(arr.length/2);
var middle=arr.splice(midIndex,1)[0];
var left=[],right=[];
for(var i=0;i
Chrome下的测试结果:

image.png