bool search_value_loop(std::vector <int> &ivec,const int search_value,std::vector <int> ::difference_type & position){
auto start=ivec.cbegin();
auto end=ivec.cend();
auto mid=start+(end-start)/2;
// std::cout<<*mid<<std::endl;
while(mid!=end && *mid!=search_value){
if(*mid<search_value){
start=mid+1;
}else{
end=mid-1;
}
mid=start +(end-start)/2;
}
if(*mid==search_value){
position=mid-ivec.cbegin()+1;
return true;
}
return false;
}
int main()
{
bool rest;
vector <int> ::difference_type position;
vector <int> ivec={1,2,3,4,18,23,85,122};
rest=search_value_loop(ivec,122,position);
if(!rest){
std::cout<<"no match values"<<std::endl;
}else{
std::cout<<position<<std::endl;
}
}
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30221425/viewspace-2142580/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30221425/viewspace-2142580/
本文介绍了一种使用C++实现的二分查找算法,该算法能够在有序整数数组中高效地搜索特定值,并返回该值的位置。通过示例展示了如何使用此函数定位数组中的元素。
818

被折叠的 条评论
为什么被折叠?



