您好,欢迎来到汇智旅游网。
搜索
您的当前位置:首页python 实现二分查找算法

python 实现二分查找算法

来源:汇智旅游网

二分查找算法

用python语言实现二分查找算法

算法思想

二分查找首先是一个有序的数组,若想要对一个无需的数组进行二分查找,则需要先对该数组进行排序,可以从小到大或者从大到小进行排序,关于排序算法,可以看我的第一篇博客的选择排序。如果要查找的元素包含在该数组中,则返回该数组所在的位置,如果不在该数组中,则返回None。

首先我们要确定数组的查找范围。

low = 0 
high = len(arr) - 1 

将待查找数与数组中间的元素进行比较,然后来调整low和high。

mid = (low + high)/ 2
num_guess = arr[mid]

如果数字猜大了,就修改high,相反,如果猜小了便修改low。

if num_guess < item
	low = mid + 1

完整的代码如下

def Serach_Binary(arr, item):
	# 首先进行变量初始化
	low = 0
	high = len(arr) - 1
	while low <= high:
		mid = int((low +high) / 2)
		num_guess = arr[mid]
		if num_guess == item:
			return mid
		elif num_guess > item:
			high = mid - 1
		else:
			low = mid + 1
	return None

a = [1, 3, 5, 6, 8, 10]
# 函数传参
S = Serach_Binary(a, 6)
print(S) # 结果为3
B = Serach_Binary(a, 7) # 结果为None		

代码亲测是可以跑通,没有问题的。

哇,今天真的好冷啊,我要回宿舍洗洗睡咯,实验室真滴好冷好冷。
编程小白虫子,今天又成长了一点点哟!加油!

2019,希望编程可以有所进步,不要再做那个连if else 和简单的for循环都写不出来的人了!!!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hzar.cn 版权所有 赣ICP备2024042791号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务