二分查找边界值
来源:互联网 发布:天涯明月刀包子脸数据 编辑:程序博客网 时间:2024/06/05 04:10
二分查找
条件:数组 && 有序
对于二分查找某一个值,在logN 复杂度完成。
对于二分查找边界值,要注意 low,high,mid的取值
// 二分查找上下界,小标从0开始/* 例如对于数组 {1,3,5,7,12,56,78},找小于7的第一个值,或大于7的第一个值 */// 查找大于key的第一个值int binary_search_upperbound(int a[],int n,int key){if(key>=a[n-1]) return -1;//如果是大于等于key的第一个值,则此处改为>int low,high,mid;low=0;high=n-1;mid=(low+high)/2;while(low<high){if(key<a[mid])//如果是大于等于key的第一个值,则此处改为<=high=mid;elselow=mid+1;mid=(low+high)/2;}cout<<(mid==high? "YES":"No")<<endl;// mid是等于high的return a[mid];}// 查找小于key的第一个值int binary_search_lowerbound(int a[],int n,int key){if(key<=a[0]) return -1;//如果是大于等于key的第一个值,则此处改为<int low,high,mid;low=0;high=n-1;mid=(low+high+1)/2;while(low<high){if(key>a[mid])//如果是大于等于key的第一个值,则此处改为>=low=mid;elsehigh=mid-1;mid=(low+high+1)/2; //如果不加1,会有死循环}cout<<(mid==low? "YES":"No")<<endl;return a[mid];}void main(){int a[]={1,3,5,7,9,12,43,56,67,78};cout<<binary_search_upperbound(a,10,3)<<endl;cout<<binary_search_lowerbound(a,10,56)<<endl;}
- 二分查找边界值
- 二分查找_边界值的判定
- 二分边界
- leetcode 34. Search for a Range-数组边界|二分查找
- 查找边界
- 二值图像查找边界,并对边界进行搜索,剔除小边界
- 二分查找 插值查找
- 二分边界小总结
- 查找(顺序查找、二分查找、插值查找)
- 二分查找及插值查找
- 二分查找及插值查找
- 算法-01-二分查找/插值查找
- 二分查找,插值查找,斐波那契查找
- java查找值二分查找和线性查找
- 有序表查找 ---二分查找、插值查找
- 二分查找
- 二分查找
- 二分查找
- IE 上传文件包含绝对路径 Include local directory path when uploading files
- json使用
- Android SAX 解析 XML
- 体质测试
- Unity 框架
- 二分查找边界值
- java基础04 内部类
- c#、asp.net 基于ajaxfileupload.js 实现文件异步上传
- Qemu介绍
- linux-ubuntu-星际译王
- 红黑树插入某个节点的方法
- UNIX网络编程——shutdown 与 close 函数 的区别
- C++中内部函数(静态函数)和外部函数的用法
- shape drawable 翻译