1.冒泡排序
通过比较和交换相邻的两个元素来对数组进行排序
function sort1(arr){
for(let i = 0; i < arr.length - 1; i++){
for(let j = 0; j<arr.length - i; j++){
if(arr[i]>arr[j+1]){
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
}
}
}
return arr;
}
2.选择排序
每次从未排序的数组选择最小的元素,放置到已排序的数组末尾,重复这个过程直到数组完成
function sort2(arr){
const n=arr.length
for(let i=0;i<n-1;i++){
let minIndex=i
for (let j=i+1;j<n;j++){
if(arr[j]<arr[minIndex]){
minIndex=j
}
}
if(minIndex!=i){
[arr[i],arr[minIndex]]=[arr[minIndex],arr[i]]
}
}
return arr;
}
3.插入排序
将数组分为已排序和未排序两部分,初始时已排序部分只包含一个元素,每次从未排序部分选择一个元素插入到已排序部分的正确位置,直到所有元素都排序完成
function sort3(arr){
const n = arr.length
for(let i = 1;i<n;i++){
const key = arr[i]
let j = i-1;
while(j >=0&&arr[j]>key){
arr[j+1] = arr[i]
j--;
}
arr[j+1]=key
}
return arr;
}
4.快速排序
选择一个基准元素,将数组分成两个部分,一部分元素均比基准元素小,另一部分元素均比基准元素大,递归对两部分进行排序
function sort4(arr,left,right){
if(left>right){
const pivotIndex = getpivotIndex(arr,left,right)
sort4(arr,left,pivotIndex-1)
sort4(arr,pivotIndex+1,right)
}
return arr
}
function getpivotIndex(arr,left,right){
const pivot = arr[right]
let i =left-1
for(let j = left;j<right;j++){
if(arr[j] <= pivot){
i++
[arr[i],arr[j]] = [arr[i],arr[j]]
}
}
[arr[i+1],arr[right]] = [arr[right],arr[i+1]]
return i + 1;
}