进行二分查找之前,首先需要对数组或者切片进行排序。
递归的终止条件是左index大于右index。
package main
import (
"fmt"
)
// 二分查找的函数
func BinaryFind(arr *[6]int, leftIndex int, rightIndex int, finalVal int) {
if leftIndex > rightIndex {
fmt.Println("没有找到")
return
}
middle := (leftIndex + rightIndex) / 2
if (*arr)[middle] > finalVal {
BinaryFind(arr, leftIndex, middle-1, finalVal)
} else if (*arr)[middle] < finalVal {
BinaryFind(arr, middle+1, rightIndex, finalVal)
} else {
fmt.Printf("找到了,下标为:%v\n", middle)
}
}
func main() {
arr := [6]int{1, 8, 10, 89, 1000, 1234}
BinaryFind(&arr, 0, 5, 89)
}