在计算机科学中,二分查找算法(英语:binary search algorithm)是一种在有序数组中查找某一特定元素的搜索算法。基本思想是:将n个元素分成大致相等的两部分,取a[n/2]与目标值x进行比较,如果a[n/2]==x,则查找成功;否则,利用a[n/2]将原来的区间分成两个子区间,然后分别在这两个区间重复上述过程,直到查找到x或区间为空为止。
与其他搜索算法对比,二分查找的时间复杂度为O(log n),因此效率比较高。在大型有序数组中查找目标值时,二分查找是最常用的算法之一。
二分查找的实现一般分为两种方式:递归和循环。递归在处理较小数据量时相对效率比较高,但最大的局限是递归的次数太多会导致程序炸掉,因此大数据量时必须使用循环实现。
二分查找的优缺点:
- 优点:查找速度快、时间复杂度低;
- 缺点:只能用于有序数列、需要额外空间存储中间值。