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.排序函数
-
最简单版本,适用于一维切片
var num []int var strs []string sort.Ints(num) sort.Strings(string)
-
可改造版本,适用于二维切片或者不符合平常数值比较的切片
sort.Slice(nums,func(i int,j int)bool{ if nums[i][0] < nums[j][0] { return true } return false })// func函数 比较两个内部切片元素,下标分别为i,j,如果符合比较条件(自定义)返回true
-
简单版本的降序方法
sort.Sort(sort.Reverse(sort.IntSlice(nums)))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)