程序填空题:二分查找
二分查找:给定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;
}
answer:
第1空: mid=(l+r)/2;
第2空: l=mid+1;
第3空: r=mid-1;
输入:
包含一组数据。数据第一行是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;
}
answer:
第1空: mid=(l+r)/2;
第2空: l=mid+1;
第3空: r=mid-1;