二分查找算法
用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循环都写不出来的人了!!!