python 实现二分查找算法

二分查找算法

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

算法思想

二分查找首先是一个有序的数组,若想要对一个无需的数组进行二分查找,则需要先对该数组进行排序,可以从小到大或者从大到小进行排序,关于排序算法,可以看我的第一篇博客的选择排序Here。如果要查找的元素包含在该数组中,则返回该数组所在的位置,如果不在该数组中,则返回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循环都写不出来的人了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值