给定15个按从小到大已经有序的整数,将其放在一个数组中。另外输入一个整数,要求使用折半查找法找出该数是数组中的第几个元素的值。如果该数不在数组中,则输出“NO”。
输入描述
第一行有15个整数,即15个从大到小已有序的原始整数。
第二行有一个整数,表示需要使用折半查找法查找的元素。
输出描述
如果查找到了输入的整数,则输出此数在序列中的序号,即第一个是0,最后一个是14。
如果查找不到这个整数,则输出“NO”。
请注意不需要输出引号,并请注意行尾输出换行。
提示
提示
样例输入
1 3 5 7 9 10 13 15 16 17 20 21 22 23 24
10 复制 更多
样例输出
5
代码实现如下:
#include<stdio.h>
int main()
{
int i,a[15],n,left,right,mid;
for(i=0;i<15;i++)
{
scanf("%d ",&a[i]);
}
scanf("%d",&n);
left=a[0];
right=a[14];
while(left<right)
{
mid=(left+right)/2;
if(n<mid)
{
right=mid-1;
}
else if(n>mid)
{
left=mid+1;
}
else
{
for(i=0;i<15;i++)
{
if(n==a[i])
printf("%d\n",i);
}
break;
}
}
if(left>right)
{
printf("NO\n");
}
return 0;
}