6习题9 有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出无此数
代码
#include <stdio.h>
int main()
{
int a[15] = {90, 99, 97, 86, 75, 73, 69, 68, 51, 43, 32, 31, 28, 25, 6};
int x, low, high, mid, n;
n = 15;
low = 0;
high = n - 1;
scanf("%d", &x);
while (low <= high)
{
mid = (low + high) / 2;
if (x > a[mid])
high = mid - 1;
else if (x < a[mid])
low = mid + 1;
else if (x == a[mid]){
printf("%d is %dth number!\n", x, mid+1);
break;
}
}
if (x != a[mid])
printf("No match!\n");
return 0;
}
结果