人工智能你必须掌握的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)))
相关文章推荐
- 人工智能你必须掌握的32个算法(二)归并排序算法
- 程序员必须掌握的十种算法---二分查找算法
- 计算机科学中最重要的32个算法,人工智能里用到很多
- 重拾算法(二):优秀程序员必须知道的32个算法。
- c++面试必须熟练掌握的算法(持续更新)
- 通关机器学习,必须掌握的32种算法
- ACM必须掌握的算法
- 第20课 :SPARK Top N彻底解秘 TOPN 排序(Scala)SPARK分组TOPN 算法(JAVA) 必须掌握!
- CCF ADL 78 深度学习讲习班回顾:这几个大热领域的算法到应用,8位学术大牛带你掌握人工智能前沿技术
- 程序员必须掌握的十种算法---快速排序算法
- 优秀程序员必须知道的32个算法,提高你的开发效率
- 算法系列:二分搜索算法
- 程序员必须掌握哪些算法?
- ACM必须掌握的算法
- 程序员必须要掌握的十大经典算法
- 优秀程序员必须知道的32个算法,提高你的开发效率
- ACM必须掌握的算法
- 优秀程序员必须知道的32个算法,提高你的开发效率
- 快速掌握机器学习,这3种算法你必须知道
- 优秀程序员必须了解的32个算法