且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

golang快速排序算法

更新时间: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)
}









本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1575230,如需转载请自行联系原作者