排序是程序员的基本工,本篇博文就js排序算法做一总结。
冒泡排序
let bubblingSort = function (arry,order){
let arry = [...src];
let order = "asc";
for(var i = 0;i<arry.length-1;i++) {
for(var j = 0;j<arry.length-i-1;j++){
if(arry[j]>arry[j+1]){
//把大的数字放到后面
var swap = arry[j];
arry[j] = arry[j+1];
arry[j+1] = swap;
}
}
}
if(order == "asc"){
return arry;
}else{
return arry.reverse();
}
}
let a = [3,45,67,2,34,12,55];
console.log(bubblingSort(a,"asc"));
console.log(bubblingSort(a,"des"));
插入排序
//插入排序
let insertSort = function(arry,order){
let len = arry.length;
for (let i = 1;i < len;i++){
let j =i;
let temp = arry[i];
if(order === "asc"){
while(j>0 && arry[j-1]>temp){
arry[j]=arry[j-1];
j--;
}
}else{
while(j>0 && arry[j-1]<temp){
arry[j]=arry[j-1];
j--;
}
}
arry[j]=temp;
}
return arry;
}
let b = [3,45,67,2,34,12,55];
console.log(insertSort(b,"asc"));
console.log(insertSort(b,"des"));
快速排序
//快速排序
let quickSort = function(arr,oreder) {
if (arr.length <= 1) { return arr; }
let pivotIndex = Math.floor(arr.length / 2);
let pivot = arr.splice(pivotIndex, 1)[0];
let left = [];
let right = [];
for (let i = 0; i < arr.length; i++){
if(order === "asc"){
if (arr[i] < pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}else{
if (arr[i] > pivot) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
}
return quickSort(left).concat([pivot], quickSort(right));
};
let c = [37,45,61,22,34,12,55];
console.log(insertSort(c,"asc"));
console.log(insertSort(c,"des"));
数组sort()排序
//sort()方法排序
let sortFn = function(arry,order){
if(order == "asc"){
return arry.sort(function(a,b){
return a-b;
})
}else{
return arry.sort(function(a,b){
return b-a;
})
}
}
let e = [7,5,11,22,34,1,6,7];
console.log(insertSort(e,"asc"));
console.log(insertSort(e,"des"));