Golang 二分查找法

2023-04-06 07:29:05 阅读:1114 评论:0 点赞:0
所属分类: Go 语言学习笔记

一、定义

二分搜索 是一种在 有序数组 中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
b8812d6b-214b-42db-8618-1bf129a17807

二、示例

// BinarySearch 二分查找法
func BinarySearch(arr []int, left, right, search int) int {
	if right < left {
		return -1
	}

	mid := left + (right-left)/2
	if arr[mid] == search {
		return mid
	} else if arr[mid] > search {
		return BinarySearch(arr, left, mid-1, search)
	} else {
		return BinarySearch(arr, mid+1, right, search)
	}
}

func main() {
	arr := []int{1, 4, 8, 9, 20, 15}
	search, _ := strconv.Atoi(os.Args[1])
	index := BinarySearch(arr, 0, len(arr)-1, search)
	if index != -1 {
		fmt.Printf("元素 %d 在数组中得索引为:%d\n", search, index)
	} else {
		fmt.Printf("元素 %d 不在数组中\n", search)
	}
}
标签: go 二分查找法

永不言弃

职业:后端开发工程师
学校:重庆师范大学
城市:重庆
文章:169
好吧,不知道说点什么...

登录逐梦笔记

注册逐梦笔记

已有账号?