最近在看一些看了又容易忘的知识点,虽然在业务代码中很少用,但在当下这种大环境下又不得不记,其实像在php中,各种sort
函数是真好用...
package main
import (
"log"
"math/rand"
"time"
)
func sort() {
var arr []int
random := rand.New(rand.NewSource(time.Now().Unix()))
for i := 0; i < 10; i++ {
arr = append(arr, random.Intn(9999))
}
log.Println(arr)
log.Println(insertion(arr))
}
// 插入排序
func insertion(arr []int) []int {
for i := range arr {
pre := i - 1
current := arr[i]
for pre >= 0 && arr[pre] > current {
arr[pre+1] = arr[pre] // 前者比后大,则前者往后移空出位置
pre -= 1
}
arr[pre+1] = current // 最后插进去
}
return arr
}
// 选择排序
func selection(arr []int) []int {
var l = len(arr)
for i := 0; i < l-1; i++ {
minIndex := i
for j := i + 1; j < l; j++ {
if arr[minIndex] > arr[j] {
minIndex = j
}
}
if i != minIndex {
arr[i], arr[minIndex] = arr[minIndex], arr[i]
}
}
return arr
}
// 冒泡排序
func bubble(arr []int) []int {
var l = len(arr)
for i := 0; i < l-1; i++ {
for j := 0; j < l-i-1; j++ {
if arr[j] > arr[j+1] {
arr[j], arr[j+1] = arr[j+1], arr[j]
}
}
}
return arr
}
参考