例如,输入10个数进行搜索
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int n;
int main()
{
vector<int> v;
int num,sought;
while(n<10){
cin>>num;
v.push_back(num);
n++;
}
cin>>sought;
sort(v.begin(),v.end());
auto beg=v.begin(),end=v.end();
auto mid=v.begin()+(end-beg)/2;
while(mid!=end && *mid!=sought){
if(sought<*mid)
end=mid;
else
beg=mid+1;
mid=beg+(end-beg)/2;
}
for(auto a:v){ //输出排序后结果
cout<<a<<" ";
}
cout<<endl;
if(sought==*mid)
cout<<"找到了"<<endl;
else
cout<<"找不到"<<endl;
return 0;
}
TIPS:
//此次不使用mid=(beg+end)/2因为结果为整型
//mid=beg+(end-beg)/2中beg为迭代器,结果仍为迭代器