前言

今天用Go语言实现下经典排序算法——快速排序算法。主要是学习了Go语言,得用它来干点事情嘛,就用快速排序来练手。在Go语言语法方面,主要用到 切片数组,for循环(Go语言没有while循环),递归函数,各种流程控制。因为在Go语言中普通数组作为函数参数是值传递,所以用切片数组,作为函数参数传入类似引用。其实Go语言蛮好学的,如果有其他语言基础,可能会觉得语法很怪异。快速排序的思路还是在这里简单说一下,就看下图吧。如果想看快排更详细的说明请看 C语言实现的排序算法:快速排序算法实现及分析(递归形式和非递归形式)

快速排序思路

Go语言代码实现

package mainimport "fmt"
import "math/rand"
import "time"func initData(arr []int) {for i, _ := range arr {arr[i] = rand.Intn(100)}
}
func QuickSort(arr []int, index_start int, index_end int) {//递归函数出口if index_start >= index_end {return}//基准数num := arr[index_start]i := index_startj := index_end//找到num合适的位置for {if i >= j {break}//将比基准数小的放到它的左边for {if i >= j {break}if arr[j] < num {arr[i] = arr[j]i++ //i往前移动break}j--}//将比基准数大的放到它的右边for {if i >= j {break}if arr[i] >= num {arr[j] = arr[i]j-- //将往后移动break}i++}}//将基准数放到 它应该有的位置arr[i] = num//将左边 进行同样的排序QuickSort(arr, index_start, i)//将右边 进行同样的排序QuickSort(arr, i+1, index_end)
}func main() {//设置随机数种子rand.Seed(time.Now().UnixNano())n := 10arr := make([]int, n, n)//初始化切片数组initData(arr)fmt.Println(arr)//快速排序QuickSort(arr, 0, len(arr)-1)fmt.Println(arr)
}

运行结果

Go语言编程:Go语言实现快速排序算法相关推荐

  1. C语言编程实现冰雹猜想的算法,并测算各个自然数到达4-2-1谷底(即N等于4,2,1结束后)所经过的变换次数。

    更多资料请点击:我的目录 1976年的一天,<华盛顿邮报>于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩 ...

  2. c语言作业冰雹猜想,C语言编程实现冰雹猜想的算法,并测算各个自然数到达4-2-1谷底(即N等于4,2,1结束后)所经过的变换次数。...

    更多资料请点击:我的目录 1976年的一天,<华盛顿邮报>于头版头条刊登了一条数学新闻,文中叙述了这样一则故事:70年代中期,美国个所名牌大学校园内,人们都像发疯一般,日以继夜废寝忘食地玩 ...

  3. 11 12 13c语言编程,C语言编程

    C语言编程 1.sscanf() sscanf()与scanf()类似,都是用于输入的,只是后者以键盘(stdin)为输入源,前者以固定字符串为输入源. 头文件:#include 格式:int ssc ...

  4. 0.618法C语言编程,c语言编程题--0.618法求最小值

    c语言编程题--0.618法求最小值0 题目: 1.函数f(x)=x+10/x,初始量a=2,b=10,c=0.3 2.步骤:(1)取a1=a+0.382*(b-a),b1=b+0.618*(b-a) ...

  5. 100以内加减法C语言编程,C语言编程100题(其三)来啦!

    原标题:C语言编程100题(其三)来啦! 无论是风里,还是在雨里,我都在这里守候着你- 大家好啊,我是小C,咱们又见面咯,前面的题目做的怎么样呢,今天又给大家送上新的题目了,快来学习吧! 计算200到 ...

  6. 在线模拟c语言编程,c语言模拟编程学习软件v2019

    C/C ++程序设计学习与实验系统是一款可用于设计教学演示.学习与实验的C/C ++语言编程学习软件,是由从事教学的老师根据C/C ++的初学者及C程序多媒体演示研发.对于想要学习C语言的朋友是一个不 ...

  7. [Lua语言编程]Lua语言基础知识

    文章目录 `Lua` `Lua`语言的起源 `Lua` 特性 `Lua下载` Linux 系统上安装 Mac OS X 系统上安装 Window 系统上安装 `Lua` `Lua`语言语法 `Lua` ...

  8. 河内塔c语言编程,C语言经典算法 - 双色河内塔

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. #include void hanoi(int disks,char source,cha ...

  9. 数制转换c语言编程,C语言数据结构中数制转换实例代码

    C语言数据结构中数制转换实例代码 数制转换是严蔚敏的数据结构那本书中的例子,但是那本书中的例子大都是用伪代码的形式写的,不是很容易理解和实现,对初学者造成了不小的困扰,在这里我们将其详尽的实现出来,以 ...

  10. 在电脑测试c语言编程,C语言电脑编程兴趣班测试题目

    <C语言电脑编程兴趣班测试题目>由会员分享,可在线阅读,更多相关<C语言电脑编程兴趣班测试题目(3页珍藏版)>请在人人文库网上搜索. 1.少年宫电脑编程兴趣班测试题目竞赛时间: ...

最新文章

  1. 全国大学生智能汽车竞赛-百度线下赛道报名开始!
  2. Magic Leap 2实测出炉:视场角增大20度,重量减轻20%,透光率低至0.3%让AR特效更逼真...
  3. 网页直播中推流组件EasyRTM推送RTMP扩展支持HEVC(H265)
  4. cpu卡操作协议iso14443协议
  5. 【模拟】【codeforces】599B Spongebob and Joke
  6. mysql 最短路经_poj 3613 Cow Relays 经L边的最短路 | 学步园
  7. ajax中url是什么意思_装修中的阳台封窗是什么意思?
  8. C++STL笔记(九):map和multimap详解
  9. java引用计数法、可达性分析法、强软虚弱、强引用、软引用、弱引用、虚引用、回收方法区、finalize()方法
  10. 《嵌入式 – GD32开发实战指南》第8章 PWM输出
  11. java tm 6 update_Java(TM) 6 Update(java运行环境) V 6.0.450.6 官方版
  12. 思科防火墙ASA5520做NAT映射配置实例
  13. 品钛要反向拆分:股价将增四倍,真有实力还是“饮鸩止渴”?
  14. 蓝牙无线测试相关参数与方法
  15. 程控交换机与集团电话的区别是什么
  16. Thinkpad E450c开启Intel virtual technology
  17. 2023 新版二开彩虹易支付 持续更新
  18. 不知道有哪些可以语音转文字的软件?推荐你用这个
  19. 抓取APP中的素材步骤之一
  20. 2023年网络安全比赛--网页渗透测试中职组(超详细)

热门文章

  1. 【M1芯片兼容】office 2021 Mac正式版最新更新
  2. 解决安装Tuxera NTFS For Mac后依旧无法写入的问题
  3. 2.3 基本算法之递归变递推 放苹果 python
  4. 轻松使用计算机,职称计算机Excel辅导:简单四招让你使用Excel轻松提速
  5. PHP笔记-文件上传例子
  6. Python笔记-使用U2滑动APP
  7. 二叉排序数的构造-理论
  8. mysql常见数据库设计_常见数据库设计
  9. java时间差的百分之二十,Java对日期Date类进行加减运算、年份加减月份加减、时间差等等...
  10. 电脑键盘功能介绍_Excel应用041:全能电脑抽奖神器(功能介绍)(原创作品) ?...