JS的几种常见排序写法
1.冒泡排序
写起来很简单,但是复杂度高,O(n2),一般适合长度在7以下的排序:
var arr=[3,1,9,8,4,1,5,6,7]
// 冒泡排序:慢,长度小于7最优
function bubble(arr){
this.arr=arr;
var ln=this.arr.length;
var middle=0;
for(var i=0;i<ln;i++){
for(j=i+1;j<ln;j++){
if(arr[i]>arr[j]){
middle=arr[i];
arr[i]=arr[j];
arr[j]=middle
}
}
}
return arr
}
arr2=bubble(arr);
console.log(arr2)
2.快排
找了一个理解起来比较简单的快排模板,直接拿出来中间的数,然后遍历对比,根据大小分别放入左、右两个空数组里,最后组合起来的时候别忘了把mid也加上。复杂度是O(nlogn)
// 快速排序
function quickSort(arr){
if(arr.length<=1){
return arr
}
var midIndex=Math.floor(arr.length/2);
var mid=arr.splice(midIndex,1)[0];
var left=[];
var right=[];
for(var i=0;i<arr.length;i++){
if(arr[i]<mid){
left.push(arr[i])
}
else{
right.push(arr[i])
}
}
return quickSort(left).concat([mid],quickSort(right));
}
var arr2=quickSort(arr);
console.log(arr2)