美文网首页
快速排序

快速排序

作者: sjyu_eadd | 来源:发表于2021-07-01 11:27 被阅读0次

    快速排序原理:[https://www.jianshu.com/p/497b8ee8b517[(https://www.jianshu.com/p/497b8ee8b517)
    go代码实现:

    package main
    
    import (
        "fmt"
    )
    
    /*
    快速排序:每一轮排序将待排序数分为两部分,然后递归
     */
    
    func parse(a []int, begin int, end int) int {
        index := a[begin]
        for begin < end {
            for begin < end && a[end] >= index {
                end--
            }
            a[begin] = a[end]
    
            for begin < end && a[begin] <= index {
                begin++
            }
            a[end] = a[begin]
        }
        a[begin] = index
    
        return begin
    }
    
    func quick_sort(a []int, begin int, end int) {
        if begin < end {
            flag := parse(a, begin, end)
            quick_sort(a, begin, flag-1)
            quick_sort(a, flag+1, end)
        }
    }
    func main() {
        a := []int{2,3,5,2,1,4}
        fmt.Println(a)
        quick_sort(a, 0, len(a)-1)
        fmt.Println(a)
    }
    

    运行结果:

    GOROOT=C:\Go #gosetup
    GOPATH=F:\goPath #gosetup
    C:\Go\bin\go.exe build -o C:\Users\windows10\AppData\Local\Temp\___go_build_quick_sort_go.exe F:/code/test/quick_sort/quick_sort.go #gosetup
    C:\Users\windows10\AppData\Local\Temp\___go_build_quick_sort_go.exe #gosetup
    [2 3 5 2 1 4]
    [1 2 2 3 4 5]
    
    Process finished with exit code 0
    

    相关文章

      网友评论

          本文标题:快速排序

          本文链接:https://www.haomeiwen.com/subject/hujjultx.html