go-希尔排序算法

package main import "fmt" func main() { var arr = []int{9, 7, 6, 8, 4, 1, 5, 2, 3} fmt.Printf("arr: %v\n", arr) var gap = 1 for { if gap >= (len(arr))/3 { break } gap = gap*3 + 1 } fmt.Printf("gap: %v\n", gap) for gap := gap; gap > 0; gap = (gap - 1) / 3 { for i := gap; i < len(arr); i++ { for j := i; j > gap-1 && arr[j] < arr[j-gap]; j -= gap { swap(arr, j, j-gap) } } fmt....

十二月 10, 2022 · 2 分钟 · Ken

go-插入排序算法

package main import "fmt" func main() { var arr = []int{9, 7, 6, 8, 4, 1, 5, 2, 3} for i := 1; i < len(arr); i++ { for j := i; j > 0; j-- { if arr[j] < arr[j-1] { swap(arr, j, j-1) } } fmt.Printf("arr: %v\n", arr) } } func swap(arr []int, a, b int) { var temp = arr[a] arr[a] = arr[b] arr[b] = temp } 输出...

十二月 10, 2022 · 1 分钟 · Ken

go-冒泡排序算法

package main import "fmt" func main() { var arr = []int{9, 7, 6, 8, 4, 1, 5, 2, 3} for i := len(arr) - 1; i > 0; i-- { for j := 0; j < len(arr)-1; j++ { if arr[j] > arr[j+1] { swap(arr, j, j+1) } } fmt.Printf("arr: %v\n", arr) } } func swap(arr []int, a, b int) { var temp = arr[a] arr[a] = arr[b] arr[b] = temp } 输出...

十二月 8, 2022 · 1 分钟 · Ken

Go-选择排序算法

正常版 每次寻找一个最小值并交换 package main import "fmt" func main() { var arr = []int{5, 3, 8, 6, 1, 8, 6, 1, 7} fmt.Printf("arr: %v\n", arr) for i := 0; i < len(arr)-1; i++ { var minPos = i for j := i + 1; j < len(arr); j++ { if arr[j] < arr[minPos] { minPos = j } } swap(arr, i, minPos) fmt.Printf("arr: %v\n", arr) } } func swap(arr []int, a, b int) { var temp = arr[a] arr[a] = arr[b] arr[b] = temp } 输出结果...

十二月 6, 2022 · 2 分钟 · Ken