一些刷算法的小模版

快排

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
func QuickSort(q []int, l, r int) {
if l == r {
return
}

x := q[(l+r)>>1]
i, j := l-1, r+1

for i < j {
for {
i++
if q[i] >= x {
break
}
}
for {
j--
if q[j] <= x {
break
}
}

if i < j {
q[i], q[j] = q[j], q[i]
}
}
QuickSort(q, l, j)
QuickSort(q, j+1, r)
}

归并排序(针对单个数组版本)

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
30
31
32
33
34
35
36
37
38
39
40
41
func MergeSort(p, q []int, l, r int) {
if l == r {
return
}

mid := (l + r) >> 1
MergeSort(p, q, l, mid)
MergeSort(p, q, mid+1, r)

k, i, j := 0, l, mid+1

for i <= mid && j <= r {
if q[i] <= q[j] {
p[k] = q[i]
k++
i++
} else {
p[k] = q[j]
k++
j++
}
}
for i <= mid {
p[k] = q[i]
k++
i++
}
for j <= r {
p[k] = q[j]
k++
j++
}

i, j = l, 0
for i < r {
q[i] = p[j]
i++
j++
}

}

一些刷算法的小模版
https://chaggle.github.io/2022/02/18/Leetcode/template/
作者
chaggle
发布于
2022年2月18日
许可协议