blog
blog copied to clipboard
排序算法
function swap (arr, a, b) {
let temp = arr[a]
arr[a] = arr[b]
arr[b] = temp
}
function bubbleSort (arr) {
for (let outer = arr.length; outer >= 2; outer--) {
for (let innner = 0; innner <= outer - 1; innner++) {
if (arr[innner] > arr[innner + 1]) {
swap(arr, innner, innner + 1)
}
}
}
return arr
}
function selectSort (arr) {
let min;
for (let outer = 0; outer <= arr.length - 2; outer++) {
min = outer
for (let inner = outer + 1; inner <= arr.length - 1; inner++) {
if (arr[min] > arr[inner]) {
swap(arr, min, inner)
}
}
}
return arr
}
function insertSort (arr) {
let inner;
let temp;
for (let outer = 1; outer < arr.length; outer++) {
inner = outer;
temp = arr[outer]
while (inner > 0 && arr[inner - 1] > temp) {
arr[inner] = arr[inner - 1]
inner--
}
arr[inner] = temp
}
return arr
}
function quickSort (arr) {
if (arr.length === 0) {
return []
}
let left = []
let right = []
let point = arr[0]
for (let i = 1; i < arr.length; i++) {
if (arr[i] < point) {
left.push(arr[i])
} else {
right.push(arr[i])
}
}
return quickSort(left).concat(point, quickSort(right))
}
console.log(bubbleSort([5, 4, 3, 2, 1]))
console.log(selectSort([5, 4, 3, 2, 1]))
console.log(insertSort([5, 4, 3, 2, 1]))
console.log(quickSort([5, 4, 3, 2, 1]))