给定15个按从大到小已经有序的整数,将其放在一个数组中。另外输入一个整数,要求使用折半查找法找出该数是数组中的第几个元素的值。如果该数不在数组中,则输出“NO”。
【输入形式】
第一行有15个整数,即15个从大到小已有序的原始整数。
第二行有一个整数,表示需要使用折半查找法查找的元素。
【输出形式】
如果查找到了输入的整数,则输出此数在序列中的序号,即第一个是0,最后一个是14。
如果查找不到这个整数,则输出“NO”。
请注意不需要输出引号,并请注意行尾输出换行。
#include<stdio.h>
int main()
{
int mid,da=14,xiao=0,i,x,sum;
int a[15];
for(i=0;i<15;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&x);
mid=(da+xiao)/2;
while(a[mid]!=x)
{
if(x<a[mid])
{
da=mid-1;
mid=(da+xiao)/2;
}
if(x>a[mid])
{
xiao=mid+1;
mid=(da+xiao)/2;
}
sum++;
if(sum==15)
break;
}
if(a[mid]==x)
{
printf("%d",mid);
}
else
printf("NO");
}