题目描述:已知有序的序列,比如:2,3,3,5,9,9,9,12,12,13,15,22,22,22,22,25,25,27,91,95有整数x,比如: x=23
要求找到一个刚好比x稍微大一点的元素位置,当数组较大的时候,需要二分查找加快速度。
#include<bits/stdc++.h>
int a[20] = {2,3,3,5,9,9,9,12,12,13,15,22,22,22,22,25,25,27,91,95};
int main()
{
int h = 19;
int l = 0;
int x = 23;
while(l < h)
{
int m = (h + l) / 2;
if(a[m] > x)
{
if(a[m - 1] < x)
{
printf("%d\n",m);
return 0;
}
h = m;
}else if(a[m] < x){
if(a[m + 1] > x)
{
printf("%d\n",m + 1);
return 0;
}
l = m;
}else if(a[m] == x)
{
for(int i = m + 1 ; i < 20 ; i++)
{
if(a[i] > x)
{
printf("%d\n",i);
return 0;
}
}
}
}
}