任务描述
题目描述:将n
个从小到大排序的整数(n<1000000
)从1~n
进行编号,并一个待查找的整数m
,请使用二分法进行查找。 ####相关知识(略) ####编程要求 根据提示,在右侧编辑器Begin-End
处补充代码。 输入 输入包括3
行,第一行为整数n
,第二行包括n
个整数,以空格分隔,第三行为整数m
。 输出 如果能够在序列中找到整数m
,则输出编号(如果存在多个编号,返回编号最小的),如果不存在,则输出None
。
测试说明
样例输入: 10
1 2 4 5 6 7 8 9 10 11
10
样例输出: 9
#include<stdio.h>
int main(void)
{
/*********Begin*********/
int n,m,low,high,mid,i;
scanf("%d",&n);
int a[n];
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
scanf("%d",&m);
low=0;
high=n-1;
while(low<=high)
{
mid=(high+low)/2;
if(m>a[mid])
low=mid+1;
else if(m<a[mid])
high=mid-1;
else if(m==a[mid])
{printf("%d",mid+1);goto END;}
}
printf("None");
END: ;
/*********End**********/
return 0;
}