1.快排
//新建数组递归,理解容易,性能差,不算真正意义上的快排
function quicksort(arr) {
if(arr.length<=1) return arr;
let left=[];
let right=[];
let num=arr[0];
for(let i=1;i<arr.length;i++) {
if(arr[i]>num) right.push(arr[i]);
else left.push(arr[i])
}
return quicksort(left).concat(num,quicksort(right));
}
//标准版本
function partition(arr,low,high){
let pivot=arr[low];
while(low<high){
while(low<high && arr[high]>=pivot){
high--;
}
arr[low]=arr[high];
while(low<high && arr[low]<=pivot){
low++;
}
arr[high]=arr[low];
}
arr[low]=pivot;
return low;
}
function quickSort(arr,low,high){
if(low<high){
let pivotPos=partition(arr,low,high);
quickSort(arr,low,pivotPos-1);
quickSort(arr,pivotPos+1,high);
}
}
2.冒泡
function bubblesort(arr) {
for(let i =0;i<arr.length;i++) {
for(let j=i;j<arr.length;j++) {
if(arr[i]>arr[j]){
let temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
}
3.选择排序
通过比较首先选出最小的一个数放在第一个位置,然后在其余的数中选出次小的数放在第二个位置,以此类推直到所有的数成为有序的序列
function selectsort(arr) {
for(let i=0;i<arr.length;i++) {
let min=i;
for(let j=i;j<arr.length;j++){
if(arr[min]>arr[j]){
min=j;
}
}
let temp=arr[i];
arr[i]=arr[min];
arr[min]=temp;
}
}