任务描述
题目描述:将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;
}
本文介绍了一种在已排序的整数序列中查找特定元素的二分查找算法实现。通过不断缩小搜索范围,该算法能高效地定位目标值的位置,若找到则返回其在序列中的最小编号,否则输出None。
5461

被折叠的 条评论
为什么被折叠?



