一、小序
自己夠強纔是王道!最近寫的技術博客少了,一是工作比較忙,二是一直在忙着給自己充電。在忙着提高自己的技術,這段時間又重啓了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)
}
2、運行結果:
三、選擇排序
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)
}
2、運行結果:
四、插入排序
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)
}
2、運行結果:
五、快速排序
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)
}
2、運行結果:
原創不易,點贊鼓勵一下吧!