golang快速排序

1.任意选取一个基值nums[0],本例选择第一个nums[0]
2.对比第一个值和第二个值nums[1]大小;
如果第一个值大,则调换第一个和第二值的位置,基值挪到第二值的位置,后面比较第二个和第三个值的大小
如果第一个值小,则调换第二值和最后一个值的位置end=len(nums)-1,nums[end], end-- ,后面拿末尾的值和第一值(基值)比较


import (
 "fmt"
)
func qsort(nums []int){
 if len(nums)<=1{
 return
 }
 mid := nums[0]
 start,end := 0,len(nums)-1
 for start<end{
 if nums[start+1]>mid{
 nums[start+1],nums[end] = nums[end],nums[start+1]
 end--
 }else{
 nums[start+1],nums[start] = nums[start],nums[start+1]
 start++
 }
 }
 nums[start]=mid
 qsort(nums[:start])
 qsort(nums[start+1:])
}
func main(){
 a := []int{-1, 0, 1, 2, -1, -4}
 qsort(a)
 fmt.Println(a)
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 排序算法几种分类方式: 1,稳定排序和不稳定排序 如果a==b, 当排序之前a在b的前面,排序后,a仍然在b...
    fly_ever 阅读 3,211评论 0赞 0
  • 转载自:https://egoistk.github.io/2016/09/10/Java%E6%8E%92%E5...
    chad_it 阅读 4,576评论 0赞 18
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百 阅读 8,861评论 0赞 4
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh 阅读 7,212评论 0赞 1
  • 我性格致命的一点就是为了追求所谓的圆满而优柔寡断,看不透这世上任何的结局都是取舍。 冬末春初,可乐的叫声也越发哀怨...
    朱不语 阅读 1,877评论 0赞 0

友情链接更多精彩内容