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