45 行
928 字符
1
export function bubbleSort(values) {
2
const arr = [...values];
3
for (let i = 0; i < arr.length; i++) {
4
for (let j = 0; j < arr.length - 1 - i; j++) {
5
if (arr[j] > arr[j + 1]) {
6
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
7
}
8
}
9
}
10
return arr;
11
}
12
13
export function heapSort(values) {
14
const arr = [...values];
15
const n = arr.length;
16
17
for (let i = Math.floor(n / 2) - 1; i >= 0; i--) {
18
heapify(arr, n, i);
19
}
20
21
for (let i = n - 1; i > 0; i--) {
22
[arr[0], arr[i]] = [arr[i], arr[0]];
23
heapify(arr, i, 0);
24
}
25
26
return arr;
27
}
28
29
function heapify(arr, n, i) {
30
let largest = i;
31
const left = 2 * i + 1;
32
const right = 2 * i + 2;
33
34
if (left < n && arr[left] > arr[largest]) {
35
largest = left;
36
}
37
if (right < n && arr[right] > arr[largest]) {
38
largest = right;
39
}
40
41
if (largest !== i) {
42
[arr[i], arr[largest]] = [arr[largest], arr[i]];
43
heapify(arr, n, largest);
44
}
45
}