您的位置:首页 > 大数据 > 人工智能

人工智能你必须掌握的32个算法(一)二分搜索算法

2018-07-16 08:38 281 查看
在计算机科学中,二分搜索(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。 从维基百科对于二分搜索的描述中可以发现: ①二分搜索的基础是必须是有序数组,并且是可比较的

②假设数组为升序,选取中间元素与需要查找元素比较大小。如果当前元素与选取元素相等,则查找结束;如果当前元素比选取元素大,则选取当前元素的右侧元素,反之选取当前元素左侧元素。

③重复步骤②直至查找指定元素或剩余元素数量为零

编程中我们需要注意两个问题: ①当数据数量为偶数时,如何选取中间值
②当有相同数据时如何处理 代码实现:

array = [1, 2, 3, 4, 5, 6, 7]
def binarySearch(array, value):
low = 0
high = len(array)-1
while low <= high:
midd = (low+high)//2  # 取整 防止结果是小数
if value == array[midd]:
return array[midd]  # 选中结果  跳出循环
elif value > array[midd]:
low = midd+1 #大于当前值 选取右侧剩余数据
else:
high = midd-1 #小于当前值 选取左侧剩余数据
return None
print('result:' + str(binarySearch(array, 3)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: