二分查找在算法竞赛中的应用
2020-05-25 19:01
18 查看
二分查找主要用于暴力查找数据时数据量过大导致的超时
原理可理解为查词典,不断缩小查找的数据范围得以很大程度上减少工作量
整数的二分查找:
对于单调数列可用一些比较好用的函数
binary_search(a+1,a+n+1,k); //判断数组a (1~n)中是否存在k(数组元素不能是递减的,要先排序) lower_bound(a+1,a+n+1,k)-a; //返回数组中a (1~n)第一个大于或等于k的值的位置 upper_bound(a+1,a+n+1,k)-a; //返回数组中a (1~n)第一个大于k的值的位置
对于实际问题更加通用的模板
int search(){ int l=左边界;r=右边界; while(l<=r){ int mid=(l+r)>>1; if(check(mid)){ ans=mid; l=mid+1; } else r=mid-1; } return ans; }
实际问题中运用二分法的难点主要在于左右边界的确定与check函数的写法,建议多加练习,剩下的直接套用这套模板就行~~
实数的二分查找(简单):
//实数二分(重点在于精度) while(r-l>0.00...1){ ...... }
相关文章推荐
- 算法细节系列(5):二分查找应用
- 测试开发基础之算法(8):二分查找的6种常用应用场景
- 二分查找算法变体在实际项目中的应用
- 二分查找算法在C/C++程序中的应用示例
- 二分算法的应用——不只是查找值!
- 二分查找算法的应用
- C语言快速排序与二分查找算法示例
- (算法)二分查找的搜索区间
- 算法——二分查找变形题
- 二分查找的变形应用
- 算法基础之python实现贪心算法中圣诞老人分糖果问题和二分查找算法中烘干衣服问题
- 基础算法-二分查找
- 二分查找算法及其变式(Python)
- Java数据结构和算法总结-数组、二分查找
- 二分查找算法的实现-分治策略
- 面试题:循环数组查找数(二分查找的扩展应用)
- 算法四 二分查找 java,c,c++
- 算法训练之二分查找小结(C++)
- 二分查找算法
- C/C++经典算法精华整理(2)-二分查找和插入查找