go快速排序

letterbeezps · 2021-10-10 15:51:40 · 1192 次点击 · 预计阅读时间 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2021-10-10 15:51:40 的文章,其中的信息可能已经有所发展或是发生改变。

快速排序GO实现

code

package main

import "fmt"

func main() {
    arrs := []int{3,5,2,5,7,1,3,5,25,2,15}
    fmt.Printf("before arr: %v\n", arrs)

    quick_sort(arrs, 0, len(arrs)-1)
    fmt.Printf("after arr: %v\n", arrs)
}

func quick_sort(arr []int, l int, r int) {
    if l >= r {
        return
    }

    var left, right int = l-1, r+1
    mid := (l + r) / 2

    x := arr[mid]
    for left < right {
        left ++
        for arr[left] < x {
            left ++
        }

        right --
        for arr[right] > x {
            right --
        }

        if left < right {
            arr[left], arr[right] = arr[right], arr[left]
        }
    }
    // fmt.Printf("temp arr: %v\n", arr)
    // fmt.Printf("left is %d \n", left)
    // fmt.Printf("right is %d \n", right)
    quick_sort(arr, l, right)
    quick_sort(arr, right+1, r)
}

打印结果

before arr: [3 5 2 5 7 1 3 5 25 2 15]

after arr: [1 2 2 3 3 5 5 5 7 15 25]


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1192 次点击  
加入收藏 微博
2 回复  |  直到 2021-10-26 00:12:14
hukn
hukn · #1 · 3年之前

比 sort.Ints(arrs) 更快?

letterbeezps
letterbeezps · #2 · 3年之前

sort.Ints里有 快速排序堆排序希尔排序,稳定性是比只用快排要好的,毕竟快排有O(n*n)的最坏情况

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传