关于二分法查找
2014-11-26 23:04
232 查看
今天在《C++ Primer》第五版page101上看见一个问题:
在二分法搜索中为什么用的是 mid = beg + ( end - beg ) /2 而非 mid = ( beg + end ) / 2 ?
从我原先的思维,去两个数的中间值确实是两数相加除以二,所以想了好一会儿也没想明白,无奈之下只好求助google了……
1. beg+end有溢出风险,而end-beg则没有;
2.从分步逻辑来看,beg + ( end - beg ) /2 表示的是”基址 + 增量/2“,而 beg + end 没有明确的意义
3.对指针和迭代器通用性更强
目前了解到的就是以上几种原因了,原来要考虑的东西有这么多,看来学习的路途任重而道远啊……
在二分法搜索中为什么用的是 mid = beg + ( end - beg ) /2 而非 mid = ( beg + end ) / 2 ?
从我原先的思维,去两个数的中间值确实是两数相加除以二,所以想了好一会儿也没想明白,无奈之下只好求助google了……
1. beg+end有溢出风险,而end-beg则没有;
2.从分步逻辑来看,beg + ( end - beg ) /2 表示的是”基址 + 增量/2“,而 beg + end 没有明确的意义
3.对指针和迭代器通用性更强
目前了解到的就是以上几种原因了,原来要考虑的东西有这么多,看来学习的路途任重而道远啊……
相关文章推荐
- 关于查找算法(二分法、hash查找)的理解
- 关于二分法查找的优化
- Java学习之数组1(1.数组的声明;2.元素为引用数据类型的数组;3.关于main方法里的String[] args;4.数组排序;5.数3退1 数组算法,(用数组模拟链表);6数组查找之二分法;7数组的拷贝)
- 关于二分法查找
- 个人练习数据结构之--------------关于线性数据的有序数组以及之上的二分法查找、不同排序方法的学习
- 关于查找方法(Find方法)的应用示例补充
- 关于查找方法(Find方法)的应用(一)
- 关于查找方法(Find方法)的应用示例
- 二分法查找
- 关于DataTable里大批量查找的更快速的方法
- 关于sap的字段和对象修改记录的查找
- Java版 二分法查找 -Java 学习笔记 (21)
- 关于查找方法(Find方法)的应用(三)
- vba关于查找方法(Find方法)的应用(一)
- [VBA]关于查找方法(Find方法)的应用(三)
- 关于sap的字段和对象修改记录的查找
- 关于Ctrl+PageDown在使用查找功能后不能使用的问题
- [VBA]关于查找方法(Find方法)的应用(二)
- 关于sap的字段和对象修改记录的查找
- 二分法——查找、排序以及库函数bsearch的用法