输入
输入包括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;
}
二分查找就如同我们玩猜数字游戏,以最少得次数查找到目标数字。
使用二分查找在整数序列中找编号
该程序实现了在一个已排序的整数序列中,通过二分查找算法寻找指定整数m的编号。如果找到,输出最小编号;否则输出None。二分查找能以最少的次数定位目标数字。





