输入
输入包括3
行,第一行为整数n
,第二行包括n
个整数,以空格分隔,第三行为整数m
。
输出
如果能够在序列中找到整数m
,则输出编号(如果存在多个编号,返回编号最小的),如果不存在,则输出None
。
#include<stdio.h>
int main()
{
int n=0;
scanf("%d",&n);
int arr[10]={0};
int i=0;
int* p=&arr[0];
for(i=0;i<n;i++)
{
scanf("%d ",(p+i));
}
int m=0;
scanf("%d",&m);
int left=0;
int right=n-1;
while(left<=right)
{
int mid=(left+right)/2;
if(arr[mid]>m)
{
right=mid-1;
}
else if(arr[mid]<m)
{
left=mid+1;
}
else
{
printf("%d",mid+1);
return 0;
}
}
if(left>=right)
{
printf("None");
}
return 0;
}
二分查找就如同我们玩猜数字游戏,以最少得次数查找到目标数字。