概述
二分查找的函数:
1.arr是一个有序数组,并且从小到大排序
2.先找到中间的下标midde=(leftindex+rigthindex)/2,然后让中间下标的值和findVal进行比较2.1如果arr[middle]>findVal,就应该向 leftindex---(middle-1)
2.2 如果arr[middle]<findVal,就应该向 (middle+1)---rigthindex
2.3如果arr[middle]=findVal,就找到3.退出递归的条件
if leftindex>rigthindex
package sunafa
import "fmt"
//二分查找的实现
//二分查找的函数:
//1.arr是一个有序数组,并且从小到大排序
//2.先找到中间的下标midde=(leftindex+rigthindex)/2,然后让中间下标的值和findVal进行比较
//
//2.1如果arr[middle]>findVal,就应该向 leftindex---(middle-1)
//2.2 如果arr[middle]<findVal,就应该向 (middle+1)---rigthindex
//2.3如果arr[middle]=findVal,就找到
//
//3.退出递归的条件
//if leftindex>rigthindex
func BinaryFind(arr *[6]int,leftindex int,rigthindex int,findVal int){
//判断leftindex是否大于rigthindex
if leftindex>rigthindex{
fmt.Println("找不到...")
return
}
//先找到中间的下标
middle:=(leftindex+rigthindex)/2
if((*arr)[middle]>findVal){
//说明我们要查找的数,应该在leftindex---(middle-1)
BinaryFind(arr,leftindex,middle-1,findVal)
}else if((*arr)[middle]<findVal){
//说明我们要查找的数,应该在(middle+1)---rigthindex
BinaryFind(arr,middle+1,rigthindex,findVal)
}else {
//找到了
fmt.Printf("找到了,下标为%vn",middle)
}
}
//调用二分查找的函数
func CallBinaryFind(){
var findnum int
for {
arr:=[6]int{11,19,21,99,119,999}
fmt.Printf("请输入你要查询的数字:%d,提示:-1-->退出循环n",findnum)
fmt.Printf("目前数组里面的内容是%vn:",arr)
fmt.Scanln(&findnum)
if findnum==-1{
break //-1退出程序
}
BinaryFind(&arr,0,len(arr)-1,findnum)
}
}
func main() {
//二分查找的实现
sunafa.CallBinaryFind()
}
最后
以上就是光亮发夹为你收集整理的二分查找的代码实现--go语言的全部内容,希望文章能够帮你解决二分查找的代码实现--go语言所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复