二分查找不算是一种算法
我认为其更偏向为一种思想
核心代码
while(l<=r) {
mid=(l+r)/2;
if(judge(mid)) {
r=mid-1;
} else
l=mid+1;
}
优点
使正常搜索的O(n)复杂度降为O(logn)
要求
所要查找的目标数据必须为有序的
说明
二分查找是通过不断缩小解可能存在的范围,从而求得问题最优解的方法。在学习与竞赛中,可以经常见到二分思想与其它算法结合的题目。
用处
搜索有序数组中的某数
可以通过二分查找搜索数组中
1.有无某数
2.某数的位置
求出方程在误差范围内的解
通过不断二分缩小解的范围
最大化最小值
最小化平均值
因为这种问题可以方便的比较
给定一数与正确解的相对大小
所以即使不知道解具体是什么
但可以通过比较缩小解的范围
参考文章:
《挑战程序设计竞赛》
百度百科