blog
blog copied to clipboard
JavaScript排序算法实现
快排
function quickSort(arr){
if(arr.length === 0) return [];
var l = [];
var r= [];
var m = ~~(arr.length/2);
var flag = arr.splice(m,1);
for(let i = 0; i < arr.length; i++){
arr[i] < flag ? l.push(arr[i]): r.push(arr[i]);
}
return quickSort(l).concat(flag,quickSort(r));
}
quickSort([5,4,3,2,7,1]) // [1,2,3,4,5,7]
冒泡
function bubbleSort(arr){
for(let i = 0; i < arr.length; i++){
for(let j = 0; j < arr.length - 1 - i; j++){
if(arr[j]>arr[j+1]){
[arr[j],arr[j+1]] = [arr[j+1],arr[j]];
}
}
}
return arr;
}
选择排序
var selectSort = function(arr){
for(var i = 0; i < arr.length; i++){
var min_index = i;
for(var j = i+1; j < arr.length; j++){
if(arr[min_index]>arr[j]){
min_index = j;
}
}
[arr[min_index],arr[i]] = [arr[i],arr[min_index]];
}
return arr;
}
归并排序
function merge(left, right){
const res = [];
while(left.length > 0 && right.length > 0 ) {
if(left[0] > right[0]) {
res.push(right.unshift());
}else{
res.push(left.unshift());
}
}
if(left.length > 0){
res.concat(left);
}
if(right.length > 0){
res.concat(right);
}
return res;
}
function mergeSort(arr){
const lens = arr.length;
if(len < 2) {
return arr;
}
const mid = ~~(lens / 2);
const left = mergeSort(arr.slice(0,mid));
const right = mergeSort(arr.slice(mid));
return merge(left,right);
}