输入描述:
第一行两个正整数n,v(1<=n<=100000,1<=v<=100000),分别表示数组长度与查找值。
第二行n个正整数a1,a2,…,an(1<=a1<=a2<=…<=an<=n)表示有序数组。
输出描述:
输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一。
此种方法耗时较长
#include <stdio.h>
int find_location(int *array, int length, int val)
{
int low = 0;
int high = length;
int tmp;
int mid;
while (low < high)
{
mid = (low + high) / 2;
if (val > array[mid])
low = mid + 1;
else if (val <= array[mid])
high = mid;
}
return low + 1;
}
int main(int argc, char **agrv)
{
int num, findnum;
int array[100000];
int result;
scanf("%d", &num);
scanf("%d", &findnum);
for (int i = 0; i < num; i ++)
{
scanf("%d", &array[i]);
}
result = find_location(array, num, findnum);
printf("%d", result);
}