• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 二分查找的问题,对于mid=beg+end-beg/2与mid=beg+end/2区别?

二分查找的问题,对于mid=beg+end-beg/2与mid=beg+end/2区别?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了beg end,beg,i beg your pardon,beg是什么意思,beg your pardon等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:二分查找的问题,对于 mid=beg+end-beg/2 与 mid=beg+end/2 区别?
描述:

一直觉得二分查找虽然实现简单,但是很多坑,最近看到这两种不同的写法,好像除了说第一种写法可以避免溢出之外,这两种写法还有什么不同吗?问题见中文版c++ primer 第五版101页习题3.26,为什么不用第二种写法?


解决方案1:

很简单。这个如果是数组下标还行的通,但如果是指针,那beg+end这个操作本身就有炸范围的风险。

另外从概念上,end-beg这个操作,得到的是有序序列中两个元素的距离增量。所以最后的逻辑能够分解为:求距离增量,然后折半,最后加回基址上边去。

而beg+end这个操作本身得到的值,并没有明确的意义。所以虽然在数学上两个式子并没有区别,但如果追究求表达式的分步运算,则后一个式子存在意义不明确的运算操作,可读性和概念性上都差一点。

至于避免溢出的问题,原谅偷懒,根据你的要求,在此回答中就完全不做考虑了。:D


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 二分查找的问题,对于mid=beg+end-beg/2与mid=beg+end/2区别?

相关文章

  • 2017-06-07 视频截图的图片是翻转90之后的
  • 2017-06-07 (VFP)为什么打开数据表在电脑下面不显示总记录及指针所指的记录号?
  • 2017-06-07 div+css布局css未知宽高的五种水平垂直布局方法
  • 2017-06-07 关于wxpython创建表格时的问题
  • 2017-06-07 使用CSS实现div水平间距值的自动匹配
  • 2017-06-07 Python中的实际常用的构建工具有哪些就像Java世界中的Ant,Maven?
  • 2017-06-07 (python)如何kill掉后台中的tail-f
  • 2017-06-07 Jboss的jvmcrash问题
  • 2017-06-07 微软官网上怎么找不到vfp的odbc呢?只能找到oledb
  • 2017-06-07 app第三方登陆后与服务端通信的疑惑

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 七牛的数据可用性是多少?
    • rails3不想用restful风格要自定路由?
    • (python)如何采集客户端或者APP内的数据信息
    • (laravel)composer安装后显示找不到模块是怎么回事?但扩展经过查询是有的,phpini也打开了(如截图所示
    • 关于脚本语言
    • (shell)linuxsh文件结合crontab问题
    • 上传图片报错Code:-1
    • 如何编程程序
    • 视频转换后网址经常打不开
    • Laravel中Homestead启动问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有