对整数的二分查找

来源:互联网 发布:centos ssh连接其他ip 编辑:程序博客网 时间:2024/05/16 19:01
//二分查找--在l-r范围内查找值v//返回下标,失败返回-1//假设a数组已经按照从小到大排序int bs(int a[],int left,int right,int v){int mid;while(left<right){mid=(left+right)>>1;if(a[mid]==v)return mid;if(a[mid]<v)left=mid+1;else right=mid;}return -1;}//二分查找--大于等于v的第一个值//假设a已经排好//传入参数必须left<=right,返回值l总是合理的int bs(int a[],int left,int right,int v){int mid;while(left<right){mid=(left+right)>>1;if(a[mid]<v) left=mid+1;//if(不符合条件)else right=mid;}return left;}//二分查找--小于等于v的第一个值//假设a已经排好//传入参数必须left<=right,返回值l总是合理的int bs(int a[],int left,int right,int v){int mid;while(left<right){mid=(left+right+1)>>1;if(a[mid]>v) right=mid-1;//if(不符合条件)else left=mid;}return right;}

原创粉丝点击