#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;
else
low=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");
}
版权声明:本文为v_yang_guang_v原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。