迭代器的经典算法--二分搜索

二分搜索从有序序列中寻找某个给定的值。二分搜索从序列中间的位置开始搜索,如果中间位置的元素正好就是要找的元素,搜索完成;如果不是,假如该元素小于要找的元素,则在序列的后半部分继续搜索;假如改元素大于要找的元素,则在序列的qian前半部分继续搜索。在缩小的范围中计算一个新的中间元素并之前重复之前的过程,直至zui最终找到目标或者没有元素可供继续搜素。

例如:

vector<int>::iterator text;

auto beg=text.begin(),end=text.end();

auto mid=text.begin()+(end - beg)/2;//初始中间点

//当还有元素尚未检查并且我们没有找到sought时执行循环

while(mid !=end &&*mid !=sought){

if (sought < *mid)//没有找到sought元素,且要找的元素在前部分么

end = mid;//如果是,调整范围忽略后部分

else //如果我们要寻找的在后部分

beg =mid+1;//在mid之后找

mid =beg+(end -beg)/2;//新的中间点

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值