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 @ 2022-07-14 21:47  JiaoMaster  阅读(36)  评论(0编辑  收藏  举报