由N
个有序整数组成的数列已放在一维数组中,给定程序的功能是:利用折半查找法查找整数m
在数组中的位置。若找到,返回其下标值,否则返回Not be found!。
#include <stdio.h>
#define N 10
int main() {
int i, a[N] = {-5, 4, 9, 15, 28, 45, 66, 89, 100, 180 }, k = -1, m;
int low = 0, high = N - 1, mid;
for (i = 0; i < N; i++)
printf("%d ", a[i]);
printf("\n");
scanf("%d", &m);
while (low <= high) {
mid = (low + high) / 2;
if (m < a[mid])
high = mid - 1;
else if (m > a[mid])
low = mid + 1;
else {
k = mid;
break;
}
}
if (k >= 0)
printf("m=%d,index=%d\n", m, k);
else
printf("Not be found!\n");
return 0;
}
运行结果