2021-07-09
排序

桶排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
* @description 桶排序
* @author ZhangYu
* @date 09/07/2021
* @param {number[]} arr
* @return {*} {number[]}
*/
function sort(arr: number[]): number[] {
const countArr = Array.from({ length: 11 }).fill(0) as number[]
arr.forEach(v => {
countArr[v]++
})
const res: number[] = []
countArr.forEach((v, i) => {
if (v) {
for (let j = 0; j < v; j++) {
res.unshift(i)
}
}
})
return res
}

冒泡排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
* @description 冒泡排序
* @author ZhangYu
* @date 10/07/2021
* @param {number[]} arr
* @return {*} {number[]}
*/
function bubbleSort(arr: number[]): number[] {
for (let i = 0; i < arr.length; i++) {
for (let j = i; j < arr.length - 1; j++) {
if (arr[i] > arr[j + 1]) {
[arr[i], arr[j + 1]] = [arr[j + 1], arr[i]]
}
}
}
return arr
}

快速排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* @description 快速排序
* @author ZhangYu
* @date 10/07/2021
* @param {number[]} arr
* @return {*} {number[]}
*/
function quickSort(arr: number[]): number[] {
let len = arr.length
let jizhunNum: number | null = null
const leftArr: number[] = []
const rightArr: number[] = []

if (len <= 1) return arr

jizhunNum = arr.splice(0, 1)[0]
len -= 1

for (let i = 0; i < len; i++) {
const num = arr[i]
if (num > jizhunNum) {
rightArr.push(num)
} else {
leftArr.push(num)
}
}

return [...quickSort(leftArr), jizhunNum, ...quickSort(rightArr)]
}
Read More