自己够强才是王道!最近写的技术博客少了,一是工作比较忙,二是一直在忙着给自己充电。在忙着提高自己的技术,这段时间又重启了Go语言的学习计划,之前了解过Go语言,也学习过一段时间,时间久了忘得也差不多了,最近在慢慢捡起来,慢慢在进阶学习。这几种算法就是在学习Go语言的过程中用来练手的,顺便分享一下。这几种算法的原理不再说明了,之前也写过C++版的,原理都在这里,感兴趣C++版的可以移步看一下:https://blog.csdn.net/toby54king/category_8301699.html
1、实现代码
package main
import "fmt"
func bubbleSort(data []int) {
for i := 0; i < len(data)-1; i++ {
for j := len(data) - 1; j > i; j-- {
if data[j] < data[j-1] {
data[j], data[j-1] = data[j-1], data[j]
}
}
}
}
func main() {
tmpArr := [...]int{
0, 4, 3, 5, 6, 7, 9, 8, 2, 1}
fmt.Println("-------冒泡排序前-------")
fmt.Println(tmpArr)
// 冒泡排序
bubbleSort(tmpArr[:])
fmt.Println("-------冒泡排序后-------")
fmt.Println(tmpArr)
}
1、实现代码
package main
import "fmt"
func selectSort(data []int) {
for i := 0; i < len(data)-1; i++ {
var min int = i
for j := i + 1; j < len(data); j++ {
if data[j] < data[min] {
min = j
}
}
data[min], data[i] = data[i], data[min]
}
}
func main() {
tmpArr := [...]int{
0, 4, 3, 5, 6, 7, 9, 8, 2, 1}
fmt.Println("-------选择排序前-------")
fmt.Println(tmpArr)
// 选择排序
selectSort(tmpArr[:])
fmt.Println("-------选择排序后-------")
fmt.Println(tmpArr)
}
1、实现代码
package main
import "fmt"
func insertSort(data []int) {
for i := 1; i < len(data); i++ {
for j := i; j > 0; j-- {
if data[j] > data[j-1] {
break
}
data[j], data[j-1] = data[j-1], data[j]
}
}
}
func main() {
tmpArr := [...]int{
0, 4, 3, 5, 6, 7, 9, 8, 2, 1}
fmt.Println("-------插入排序前-------")
fmt.Println(tmpArr)
// 插入排序
insertSort(tmpArr[:])
fmt.Println("-------插入排序后-------")
fmt.Println(tmpArr)
}
1、实现代码
package main
import "fmt"
func quickSort(data []int, left, right int) {
if left >= right {
return
}
tmpVal := data[left]
mid := left
// 划分数组,确定tmpVal的位置
for i := left + 1; i <= right; i++ {
// 从小到大排序,改为>则从大到小
if data[i] < tmpVal {
data[mid], data[i] = data[i], data[mid+1]
mid++
}
}
data[mid] = tmpVal
quickSort(data, left, mid-1)
quickSort(data, mid+1, right)
}
func main() {
tmpArr := [...]int{
0, 4, 3, 5, 6, 7, 9, 8, 2, 1}
fmt.Println("-------快速排序前-------")
fmt.Println(tmpArr)
// 快速排序
quickSort(tmpArr[:], 0, len(tmpArr)-1)
fmt.Println("-------快速排序后-------")
fmt.Println(tmpArr)
}
原创不易,点赞鼓励一下吧!