
【计】 dichotomizing search
二分法检索(Binary Search)是一种在有序数据集中高效查找特定元素的算法。其核心思想是通过不断将搜索范围减半来快速定位目标值,属于计算机科学中的经典分治策略应用。以下从汉英词典角度详解其定义、原理及特点:
二分法检索指在有序数组或列表中,通过反复将待查找区间分成两半并排除不包含目标值的一半,逐步缩小范围直至找到目标值或确定其不存在的方法。
Binary Search is an algorithm that efficiently locates a target value within asorted array by repeatedly dividing the search interval in half. If the target value is less than the middle element, the search continues in the lower half; otherwise, it proceeds in the upper half(来源:严蔚敏《数据结构》)。
确定搜索范围的起始点(low
)和结束点(high
),通常为数组的首尾索引。
mid = (low + high) // 2
。low = mid + 1
(搜索右半区)。high = mid - 1
(搜索左半区)。当low > high
时,表明目标值不存在,返回特定标识(如 -1
)。
最优情况:$O(1)$(目标值位于中间)
最坏与平均情况:$O(log n)$,$n$为数据规模(来源:Knuth《计算机程序设计艺术》)。
适用于静态或低频更新的有序数据,如字典索引、数据库查询优化、大型游戏分数排名系统等(来源:IEEE《算法导论》)。
二分法检索是分治思想的典型应用:
参考资料:
- 严蔚敏. 数据结构(C语言版). 清华大学出版社.
- Knuth, D. E. The Art of Computer Programming, Volume 3: Sorting and Searching. Addison-Wesley.
- IEEE Xplore: "Efficient Search Algorithms in Database Systems".
- Cormen, T. H. et al. Introduction to Algorithms. MIT Press.
二分法检索(又称二分查找)是一种在有序数组中快速查找特定元素的算法。其核心思想是通过不断缩小搜索范围,将时间复杂度降至O(log n),效率远高于线性搜索(O(n))。以下是详细解释:
前提条件
数组必须有序(升序或降序),且元素支持随机访问(如数组结构)。
操作步骤
low=0
,右边界high=数组长度-1
)。mid = low + (high - low) // 2
(避免整数溢出)。low = mid + 1
;high = mid - 1
。low > high
(未找到目标)。假设在有序数组[2, 5, 8, 12, 16, 23, 38, 56]
中查找23
:
low=0
, high=7
→ mid=3
(值为12),因12 < 23,调整low=4
。low=4
, high=7
→ mid=5
(值为23),找到目标。若数组长度为$n$,最坏情况下比较次数为:
$$
log_2 n + 1
$$
即时间复杂度为:
$$
O(log n)
$$
如果需要代码实现或更具体的变体(如查找边界值),可进一步补充说明。
巢菜糖唇损害纯系的低能液体懂得骺骨折黄酶化学计算法降线一波的交流偏压进化定律机轴绝对欧姆凯努氏肛皮淋巴管丛可中止子系统寇茨氏视网膜炎矿泉学劳动英雄酪杆菌α联合条款毛纲草酚梅尔西埃氏嵴爬虫类样红细胞强制供油润滑切向接合去氧糖杓状软骨固定术条件停机臀位取胎术未婚妻