练习:使用go语言实现冒泡排序和归并排序

冒泡排序是所有排序算法中最简单的,练习时先实现它:

func bubbleSort(array []int) {
n := len(array)
for j := ; j < n; j++ {
for i := ; i < n--j; i++ {
fmt.Println(i, j, n, array[i], array[i+])
if array[i] > array[i+] {
array[i], array[i+] = array[i+], array[i]
}
}
}
}

等语法熟悉之后,可以实现更复杂的算法练习,比如归并排序:

func mergeSort(array []int64) []int64 {
n := len(array)
if n <= {
return array
}
num := n /
left := mergeSort(array[:num])
right := mergeSort(array[num:])
return merge(left, right)
}
func merge(left, right []int64) (result []int64) {
size, i, j := len(left)+len(right), ,
slice := make([]int64, size, size) for k := ; k < size; k++ {
if i > len(left)- && j <= len(right)- {
slice[k] = right[j]
j++
} else if j > len(right)- && i <= len(left)- {
slice[k] = left[i]
i++
} else if left[i] < right[j] {
slice[k] = left[i]
i++
} else {
slice[k] = right[j]
j++
}
}
return slice
}

测试代码

package main

import "fmt"

func main() {
src := []int{, , , , , , }
for _, e := range src {
fmt.Print(e, ",")
}
fmt.Println()
for _, e := range mergeSort(src) {
fmt.Print(e, ",")
}
fmt.Println()
}

最新文章

  1. 深入理解javascript函数参数与闭包(一)
  2. 简易的GCC图形界面GCCUI
  3. js清除浏览器缓存的几种方法
  4. display:none 与 opacity:0
  5. 使用JavaScript获得星期几和每月多少天
  6. 炫酷JQUERY自定义对话框插件JDIALOG_JDIALOG弹出对话框和确认对话框插件
  7. [CF733D]Kostya the Sculptor(贪心)
  8. Goldengate常用命令
  9. 华为OJ平台——查找组成一个偶数最接近的两个素数
  10. TJU 4087. box
  11. 给你的Cordova HybridApp加入Splash启动页面
  12. WebApi路由及版本控制
  13. GZIP压缩、解压缩工具类
  14. Brainfuck与Ook!编程语言解析与解密
  15. 纯HTML自动刷新页面或重定向
  16. Java面试题汇总
  17. 前端面试题之css
  18. Django:(博客系统)使用使用mysql数据&amp;创建post/category/tag实体,并同步到数据中
  19. DAY21、面向对象
  20. python 全栈开发,Day11(函数名应用,闭包,装饰器初识,带参数以及带返回值的装饰器)

热门文章

  1. 火车采集用到的access查询命令小结
  2. java一键搭建新项目(地址)
  3. Struts 2 配置Action详解_java - JAVA
  4. 破解wifi_失败
  5. 016:URL命名与反转URL
  6. mysql存储ip数值
  7. JMS学习九(ActiveMQ的消息持久化到Mysql数据库)
  8. sqli-labs(28a)
  9. wannalfy 挑战赛7 F Masha与老鼠(贪心+dp)
  10. android图片的缩放、圆角处理