二分查找
时间:1000 空间:65536
[描述]:
二分查找:
输入N个序数(N <= 10^6)从小到大,使用二分查找给定数M是否存在,如果有该数,则从左到右输出第一次出现的位置(计数从1开始),如果没有这样的数输出0。
输入:
第一行和整数 n, m
n 个整数的第二行
输出:
m 第一次出现的位置。如果没有这样的数字,则输出 0。
示例输入:
7 4 1 2 4 4 5 7 9
示例输出:
3
程序:
#include<bits/stdc++.h>
using
namespace
std;
int
n,m,a[1000005],l,r,mid;
int
main()
{
cin>>n>>m;
for
(
int
i=1;i<=n;i++)
scanf
(
"%d"
,a+i);
l=0,r=n+1;
while
(l+1<r)
{
mid=(l+r)/2;
if
(a[mid]<m)
l=mid;
else
r=mid;
}
if
(a[r]==m)
cout<<r;
else
cout<<0;
return
0;
}