C语言二分查找
虽然说C有bsearch,但实际上真的很不好用,不如自己手写。
最近想练习一下指针和malloc开动态空间。(
其实就只是把所有能用指针的地方用指针的二分查找
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <ctype.h>
int *a;
int main()
{
int n, m, i;
a = (int *)malloc(1000010 * sizeof(int));//开空间
scanf("%d%d", &n, &m);
for (i = 1; i <= n; ++i)
scanf("%d", a + i);
int tar, *l, *r, *mid;
for (i = 1; i <= m; ++i)
{
scanf("%d", &tar);
l = a + 1, r = a + n;
while (l < r)
{
mid = l + (r - l) / 2;
if ((*mid) < tar)
l = mid + 1;
else
r = mid;
}
if ((*l) != tar)
printf("-1 ");
else
printf("%d ", l - a);
}
return 0;
}