快速排序
通过选择一个基准元素,将数组划分为左右两个子数组,左边的元素小于等于基准,右边的元素大于基准,然后递归地对左右两个子数组进行快速排序,直到排序完成。
function quicksort(arr){
if(arr.length<=1) return arr;
let p = arr[0];
let left=[];
let right=[];
for(let i=1;i<arr.length;i++){
if(arr[i]<p){
left.push(arr[i]);
}
else{
right.push(arr[i]);
}
}
return [...quicksort(left),p,...quicksort(right)];
}
let arr=[5,7,0,2,-1,11,9,3,6,-5,4,1];
console.log(quicksort(arr));
插入排序
从第二个元素开始,将待排元素插入到前面已经排好序的序列中
function insersort(arr){
for(let i=1;i<arr.length;i++){
for(let j=i;j>0;j--){
if(arr[j-1]>arr[j]){
[arr[j-1],arr[j]]=[arr[j],arr[j-1]];
}
}
}
return arr;
}
let arr=[5,7,0,2,-1,11,9,3,6,-5,4,1];
console.log(insersort(arr));
选择排序
每次在剩余的元素中选择最小的元素,添加到已经排好序的元素序列尾部
function selectsort(arr){
for(let i=0;i<arr.length-1;i++){
let min=i;
for(let j=i+1;j<arr.length;j++){
if(arr[j]<arr[min]){
min=j;
}
}
[arr[i],arr[min]]=[arr[min],arr[i]];
}
return arr;
}
let arr=[5,7,0,2,-1,11,9,3,6,-5,4,1];
console.log(selectsort(arr));