-->
当前位置:首页 > 题库 > 正文内容

程序填空题:二分查找

Luz2年前 (2022-11-30)题库968
二分查找:给定n个元素,使用二分法从中查找特地元素x。

输入:
包含一组数据。数据第一行是n,第二行是n个数。第三行为要查找的数x

T<2000, n<100000

输出:

先输出排序后的数组。如果找到x,则输出x的位置;如果没找到,输出“-1”。



样例1输入:

11

60 17 39 15 8 34 30 45 5 52 25

17

样例1输出:

5 8 15 17 25 30 34 39 45 52 60

4



样例2输入:

7

12 3 3 45 26 7 7

7

样例2输出:

3 3 7 7 12 26 45

4

c++
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n;
cin>>n;
int a[100005];
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+n+1);
int x;
cin>>x;
int l=1,r=n;
int mid;
while(l<=r)
{

if(a[mid]<x)
{

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

}
else{
l=mid;
break;
}
}
for(int i=1;i<=n;i++)
{
if(i!=n)
cout<<a[i]<<" ";
else
cout<<a[i]<<endl;
}
if(a[l]==x)
cout<<l<<endl;
else
cout<<-1<<endl;


return 0;
}






答案:
第1空: mid=(l+r)/2;

第2空: l=mid+1;

第3空: r=mid-1;

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。