go语言做题常用排序方法

1. 手撸快排,最直接的方法,也是最慢的

func quicksort(nums []int,start int,end int){
    if start >= end {
        return
    }
    root := nums[end]
    l := start
    r := end
    for l < r {
        for nums[l] <= root && l < r {
            l++
        }
        nums[r] = nums[l]
        for nums[r] >= root && l < r {
            r--
        }
        nums[l] = nums[r]
    }
    nums[l] = root
    quicksort(nums ,start,l - 1)
    quicksort(nums ,l + 1,end)
}

 

2.排序函数

  1. 最简单版本,适用于一维切片

    var num []int
    var strs []string
    sort.Ints(num)
    sort.Strings(string)
    
  2. 可改造版本,适用于二维切片或者不符合平常数值比较的切片

    sort.Slice(nums,func(i int,j int)bool{
        if nums[i][0] < nums[j][0] {
            return true
        }
        return false
    })// func函数 比较两个内部切片元素,下标分别为i,j,如果符合比较条件(自定义)返回true
    
  3. 简单版本的降序方法

    sort.Sort(sort.Reverse(sort.IntSlice(nums)))
    
posted @   JiaoMaster  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示