冒泡:
package main import ( "fmt" ) func BubbleSort(arr []int) []int { // 改进的冒泡排序 num := len(arr) //:=自动匹配变量类型 for i := 0; i < num; i++ { status := false for j := i + 1; j < num; j++ { if arr[i] > arr[j] { status = true arr[i], arr[j] = arr[j], arr[i] } } if status == false { break } } return arr } func main() { arr := []int{100, 200, 55, 9, 88, 77, 66, 55, 44, 1, 2, 3, 65, 4, 7, 89, 6, 3, 32, 1, 4, 0, 5, 8, 7} fmt.Printf("排序前:%v ", arr) NewArr := BubbleSort(arr) fmt.Printf("排序后:%v", NewArr) }
插入:
package main import "fmt" func main() { //插入排序 arr := []int{1,2,5,8,7,9,6,4,3,0} fmt.Println(InertSort(arr)) } func InertSort(arr []int)[]int{ num := len(arr) for i:=1; i<num; i++{ min := arr[i] j := i-1 for j >=0 && arr[j] >= min{ arr[j+1] = arr[j] j-- arr[j+1] = min } } return arr }
选择排序:
package main import ( "fmt" ) func main() { arr := []int{1, 2, 5, 8, 7, 4, 3, 6, 9, 0} fmt.Println(SelectSort(arr)) } func SelectSort(arr []int) []int { num := len(arr) for i := 0; i < num; i++ { min := i for j := i + 1; j < num; j++ { if arr[j] < arr[min] { min = j } } arr[i], arr[min] = arr[min], arr[i] } return arr }
二分查找:
package main import ( "fmt" ) func main() { arr := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20} fmt.Println(BinarySearch(arr, 5)) } func BinarySearch(arr []int, key int) int { low := 0 high := len(arr)-1 for arr[low] <= arr[high] { if key > low { low = key } else if key < high { high = key } else { return key } } return -1 }