更新时间:2022-10-02 14:37:26
go语言真的是很简洁,下面用它来实现快速排序算法
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
42
43
|
package qsort
func quickSort(values [] int , left int , right int ) {
if left < right {
// 设置基准值
temp := values[left]
// 设置哨兵
i, j := left, right
for {
// 从右向左找,找到第一个比基准值小的数
for values[j] >= temp && i < j {
j--
}
// 从左向右找,找到第一个比基准值大的数
for values[i] <= temp && i < j {
i++
}
// 如果哨兵相遇,则退出循环
if i >= j {
break
}
// 交换左右两侧的值
values[i], values[j] = values[j], values[i]
}
// 将基准值移到哨兵相遇点
values[left] = values[i]
values[i] = temp
// 递归,左右两侧分别排序
quickSort(values, left, i-1)
quickSort(values, i+1, right)
}
} func QuickSort(values [] int ) {
quickSort(values, 0, len(values)-1)
} |