Problem C: 二分查找Ⅱ

Problem C: 二分查找Ⅱ

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 841  Solved: 464
[Submit] [Status] [Web Board] [Creator:]

Description

给定一个包含n个关键字的有序(从小到大排列)数列,采用“二分查找算法”查找关键字x。要求输出:关键字的位置及进行比较的次数。

Input

第一行一个整数n(n<=100,000)。

第二行包含n个从小到大有序的整数,各数之间用一个空格隔开。

第三行一个整数x。

Output

两个整数,表示x所在的位置以及比较的总次数。

Sample Input Copy

10
1 2 3 4 5 6 7 8 9 10
9

Sample Output Copy

9 3

HINT

二分查找算法

样例解释:第1次和序列中的5比较,第2次和序列中的8比较,第3次和序列中的9比较。



二分简单模版:

#include<bits/stdc++.h>
using namespace std;
int a[1000],n,i,l,r,x,mid;
int main()
{

cin>>n;
for(i=1;i<=n;i++) cin>>a[i];
cin>>x;
l=1;
r=n;
sort(a+1,a+1+n);
while(l<=r)
{
mid=(l+r)/2;
if(a[mid]==x)
{

}
else if(x>a[mid])
{

}
else 
{

}
}
return 0;
}