package main
import (
"fmt"
)
/*
* arr *[6]int 查询的数组
* leftIndex int 左边界
* rightIndex int 右边界
* findValue int 要查询的值
*/
func BinaryFind(arr *[6]int, leftIndex int, rightIndex int, findValue int) {
if leftIndex > rightIndex { //左下标 > 右下标时未找到该值 (递归退出条件)
fmt.Printf("在arr数组未查询到%v", findValue)
return
}
var middle int = (rightIndex + leftIndex) / 2 //中间的下标
if arr[middle] > findValue {
BinaryFind(arr, leftIndex, middle - 1, findValue) //中间分割 取左边进行查找 (leftIndex 到 middle - 1这个区间)
} else if arr[middle] < findValue {
BinaryFind(arr, middle + 1, rightIndex, findValue) //中间分割 取右边进行查找 (middle + 1 到 rightIndex 这个区间)
} else {
fmt.Printf("在arr数组查询到%v,下标为%v", findValue, middle)
return
}
}
func main() {
var arr [6]int = [6]int{11,22,33,55,66,77} //有序的数组
BinaryFind(&arr, 0, len(arr) - 1, 55) //在arr数组查询到55,下标为3
}
【Golang】二分查找
最新推荐文章于 2024-11-05 19:16:01 发布