【描述】
有15个按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
【C语言】
#include<stdio.h>
int main() {
int a[15] = { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1 };
int i;
for (i = 0; i < 15; i++)
printf("%3d", a[i]);
int num;
scanf("%d", &num);
int min = 1, max = 15, mid;
while (min + 1 != max) {
mid = (min + max) / 2;
if (num > a[mid])
max=mid;
else if (num < a[mid])
min = mid;
else {
printf("\n%d", mid);
break;
}
}
if (num == a[max-1])
printf("\n%d", max);
else if (num == a[min-1])
printf("\n%d", min);
else if (num != a[mid])
printf("\n无此数");
return 0;
}