二分搜索
2018-06-17 23:19:53来源:未知 阅读 ()
二分搜索从有序序列中寻找某个给定的值。二分搜索从中间位置开始搜索,如果中间位置的元素正好就是要找的元素,搜索完成;如果不是,假如该元素小于要找的元素,则在序列的后半部分继续搜索;假如该元素大于要找的元素,则在序列的前半部分继续搜索。在缩小的范围内计算一个新的中间元素并重复之前的过程,直至最终找到目标或者没有元素可供继续搜索(即未找到要搜索的元素)。
1 //text 必须是有序的 2 //beg 和 end表示我们搜索的范围 3 auto beg = text.begin(), end = text.end(); 4 auto mid = text.begin() + (end - beg) / 2; //初始状态下的中间点 5 6 //当还有元素尚未检查并且我们还没有找到 sought 时执行循环 7 while (mid != end && *mid != sought) 8 { 9 if (sought < *mid) ///我们要找的元素在前半部分吗? 10 { 11 end = mid; //如果是,调整搜索范围使得忽略掉后半部分 12 } 13 else //我们要找的元素在后半部分 14 { 15 beg = mid + 1; //在 mid 之后寻找 16 } 17 mid = beg + (end - beg) / 2; //新的中间点 18 }
循环过程终止时,mid 或者等于 end 或者指向要找的元素。如果 mid 等于 end,说明 text 中没有我们要找的元素。
摘自 C++Primer page100
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 二叉搜索树_BST 2020-05-30
- 二叉搜索树3 2020-02-06
- 数据结构---二叉搜索树 2020-02-06
- BFS和队列 2020-01-18
- oi笔记——抽象的深度优先搜索 2020-01-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash