快速排序
let quickSort = function(arr) {
if (arr.length <= 1) return arr
_quickSort(arr, 0, arr.length - 1)
return arr
}
let _quickSort = function(arr, start, end) {
if (start >= end) return
let left = start
let right = end
let flag = Math.floor((start + end) / 2)
let pivot = arr[flag]
while (left < right) {
if (left < flag && arr[left] <= pivot) {
left++
}
if (right > flag && arr[right] >= pivot) {
right--
}
if (left == right) {
continue
}
let temp = arr[left]
arr[left] = arr[right]
arr[right] = temp
if (left == flag) {
flag = right
} else if (right == flag) {
flag = left
}
}
_quickSort(arr, start, flag - 1)
_quickSort(arr, flag + 1, end)
}
插入排序
let insertSort = function(arr) {
if (arr.length <= 1) return arr
for (let i = 1
let flag = i
let temp = arr[i]
while (flag > 0 && temp < arr[flag - 1]) {
arr[flag] = arr[flag - 1]
flag--
}
arr[flag] = temp
}
return arr
}
归并排序
let mergeSort = function(arr) {
if (arr.length <= 1) return arr
let flag = Math.floor((0 + arr.length) / 2)
let leftArr = arr.slice(0, flag)
let rightArr = arr.slice(flag)
return _merge(mergeSort(leftArr), mergeSort(rightArr))
}
let _merge = function(leftArr, rightArr) {
let left = leftArr.length
let right = rightArr.length
let i = 0
let j = 0
let arr = []
while (i < left && j < right) {
if (leftArr[i] < rightArr[j]) {
arr.push(leftArr[i++])
} else {
arr.push(rightArr[j++])
}
}
while (i < left) {
arr.push(leftArr[i++])
}
while (j < right) {
arr.push(rightArr[j++])
}
return arr
}
冒泡排序
let bubbleSort = function(arr) {
if (arr.length <= 1) return arr
for (let i = 0
for (let j = 0
if (arr[j] > arr[j+1]) {
let temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
return arr
}