二分查找

来源:互联网 发布:网络品牌策略研究论文 编辑:程序博客网 时间:2024/06/12 22:09

int Bi_Search(int a[],int n,int b)//
{//返回等于b的第一个
if(n==0)
return -1;
int low = 0;
int high = n-1;
int last = -1;//用last记录上一次满足条件的下标
while (low<=high)
{
int mid = low +(high-low)/2;
if (a[mid]==b)
{
last = mid;
high = mid -1;
}
else if(a[mid]>b)
high = mid -1;
else
low = mid +1;
}

return last;

}

 

 

 


int Bi_Search1(int a[],int n,int b)//大于b的第一个数
{
if(n<=0)
return -1;
int last = -1;
int low = 0;
int high = n-1;
while (low<=high)
{
int mid = low +(high - low)/2;
if(a[mid]>b)
{
last = mid;
high = mid -1;
}
else if (a[mid]<=b)
{
low =mid +1;
}
}

return last;
}

0 0
原创粉丝点击