在计算机科学中,二分查找算法(英语:binary search algorithm),也称折半搜索算法(英语:half-interval search algorithm)、对数搜索算法(英语:logarithmic search algorithm),是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
二分查找是基于有序数据集合的查找算法,且数据结构必须为数组形式(能通过连续下标访问),比较适合处理中等批量的静态数据(无频繁更新、删除操作,且过大过小的数据量都不好)。
算法实现
普通版
1 | def BinarySearch(arr, value): |
递归版
1 | def main(arr,value): |
算法趣事
虽然早在1946年就有人将二分查找的方法公诸于世,但直到1962年才有人写出没有bug的二分查找程序。 ——乔恩·本特利,《编程珠玑(第1版)》