有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数
是数组中第几个元素的值。如果该数不在数组中,则输出“无此数”。
折半查找法:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main()
{
int a[15] = { 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1 };
int i, n;
int high, mid, low;
printf("请输入要查找的数:\n");
scanf_s("%d", &n);
high = 14; low = 0;
while (low<=high)
{
mid = (high + low) / 2;
if (a[mid]==n)
{
printf("%d是数组中第%d个元素的值", n, mid);
break;
}
if (a[mid]<n)
{
high = mid - 1;
}
else
{
low = low + 1;
}
}
if (low > high)
{
printf("无此数");
}
scanf_s("%d", &n);
system("pause");
return 0;
}
调试结果: