#include <string.h>
#include <stdio.h>
#include <assert.h>
int findval(int a[], int len, int val)
{
int begin, end, mid;
begin = 0;
end = len -1;
while (begin < end)
{
mid = (begin + end) / 2;
if (val > a[mid])
begin = mid + 1;
else
end = mid;
}
if (a[end] >= val)
return end;
else if (a[begin] >= val)
return begin;
else return -1;
}
void main(void)
{
int a[] = {5,5,5,6,8,9,10,12};
int b = 5;
int len = sizeof(a)/sizeof(int);
int n = -1;
n = findval(a, len, b);
printf("find the val index is %d",n);
}
从一个升序数组中二分查找第一个大于等于val的数
最新推荐文章于 2024-06-01 23:19:32 发布