数组二分法查找求解

我想问一下划红线这里的-low-1是什么意思,找不到返回-1不就可以了吗,为什么要把low也写成-low... 我想问一下划红线这里的-low-1是什么意思,找不到返回-1不就可以了吗,为什么要把low也写成-low 展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
zx198799
推荐于2016-02-20 · TA获得超过1225个赞
知道小有建树答主
回答量:509
采纳率:100%
帮助的人:283万
展开全部
我个人的看法,从函数的功能来看这个问题。

就像你说的那样,在查找失败的时候只需要return -1就可以了。
这样只需要判断返回值是否等于-1,等于则没有找到,不等于的时候就是找到了。

但是这个代码却return -low-1。
这样也是可以的,返回值是负数则没有找到,否则就是找到了。

除此之外,return -low-1带来一个好处,是return -1不具备的。
就是,在查找失败的时候,可以根据返回值来判断待查找的值与数组中的值的大小位置关系。

假如这样一种情况,我们需要往一个排好序的数组中插入一个数,
如果该数组已经有这个数了就不插入,如果没有则插入并保持有序。
那么return -low-1这种方法就有一个附加的好处了,
因为我们可以先查找,如果没有找到,那么可以根据返回值来知道插入点,而不需要再去搜索插入点了。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式