二分查找

来源:互联网 发布:好用的浏览器知乎 编辑:程序博客网 时间:2024/05/11 01:41
#include<iostream>using namespace std;//二分查找等于某个数的坐标int bs1(int a[],int size,int v){int low=0;int high=size-1;int mid;while(low<=high){mid=low+(high-low)/2;cout<<low <<mid <<high<<endl;if(a[mid]==v)return mid;else if(a[mid]>v)high=mid-1;elselow=mid+1;}return -1;}//查找第一个等于某个数的坐标int bs2(int a[],int size,int v){int low=0;int high=size-1;int mid;while(low<high){mid=low+(high-low)/2;if(a[mid]>=v)high=mid;else low=mid+1;}if(a[low]==v)return low;else return -1;}//查找第一个大于某个数的坐标int bs3(int a[],int  size,int v){int low=0;int high=size-1;int mid;    while(low < high) {       mid = low + (high-low)/2;       if(a[mid] >v) high = mid;        else   low = mid + 1;        }    return low;}//查找void main(){int a1[7]={1,2,3,6,9,15,90};int index1=bs1(a1,7,1);cout<<index1<<endl;int a2[7]={1,4,6,6,6,9,80};int index2=bs2(a2,7,6);cout<<index2<<endl;int index3=bs3(a2,7,-1);cout<<index3<<endl;system("pause");}

0 0