|
代码:
#include <stdio.h>
#include <stdlib.h>
int find_number (int *p, int num, int val);
int main()
{
int a [15] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
int val;
int *p = a;
int num = 15;
int ret;
printf ("Input a number which want to find: ");
scanf ("%d", &val);
ret = find_number (p, num, val);
if (ret == -1) {
printf ("Can not find out the number\n");
exit (1);
}
printf ("find out the number at array position: %d \n", ret);
return (0);
}
int find_number (int *p, int num, int val)
{
int high = num;
int low = 0;
int mid;
while (low <= high) {
mid = (low + high) / 2;
if (val == *(p + mid))
return (mid);
if (val > *(p + mid))
low = mid + 1;
if (val < *(p + mid))
high = mid - 1;
}
return (-1);
} |
|