二分查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | // 二分 func binarySearch(list []int, key int) int {<!-- --> low, high := 0, len(list)-1 for low <= high {<!-- --> mid := (low + high) / 2 if key < list[mid] {<!-- --> high = mid - 1 continue } if key > list[mid] {<!-- --> low = mid + 1 continue } return mid } return -1 } |
插入排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // 插入排序 func InsertionSort(a []int) {<!-- --> n := len(a) if n <= 1 {<!-- --> return } for i := 1; i < n; i++ {<!-- --> value := a[i] j := i - 1 //查找要插入的位置并移动数据 for ; j >= 0; j-- {<!-- --> if a[j] < value {<!-- --> a[j+1] = a[j] } else {<!-- --> break } } a[j+1] = value } } |
冒泡排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 冒泡排序 func BubbleSort(a []int) {<!-- --> length := len(a) if length < 1 {<!-- --> return } for i := 0; i < length; i++ {<!-- --> // 提前退出标志 flag := false for j := 0; j < length-i-1; j++ {<!-- --> if a[j] > a[j+1] {<!-- --> a[j], a[j+1] = a[j+1], a[j] //此次冒泡有数据交换 flag = true } } // 如果没有交换数据,提前退出 if !flag {<!-- --> break } } } |
选择排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | // 选择排序 func SelectionSort(a []int) {<!-- --> n := len(a) if n <= 1 {<!-- --> return } for i := 0; i < n; i++ {<!-- --> // 查找最小值 minIndex := i for j := i + 1; j < n; j++ {<!-- --> if a[j] < a[minIndex] {<!-- --> minIndex = j } } // 交换 a[i], a[minIndex] = a[minIndex], a[i] } } |