数组二分法查找求解
我想问一下划红线这里的-low-1是什么意思,找不到返回-1不就可以了吗,为什么要把low也写成-low...
我想问一下划红线这里的-low-1是什么意思,找不到返回-1不就可以了吗,为什么要把low也写成-low
展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
展开全部
我个人的看法,从函数的功能来看这个问题。
就像你说的那样,在查找失败的时候只需要return -1就可以了。
这样只需要判断返回值是否等于-1,等于则没有找到,不等于的时候就是找到了。
但是这个代码却return -low-1。
这样也是可以的,返回值是负数则没有找到,否则就是找到了。
除此之外,return -low-1带来一个好处,是return -1不具备的。
就是,在查找失败的时候,可以根据返回值来判断待查找的值与数组中的值的大小位置关系。
假如这样一种情况,我们需要往一个排好序的数组中插入一个数,
如果该数组已经有这个数了就不插入,如果没有则插入并保持有序。
那么return -low-1这种方法就有一个附加的好处了,
因为我们可以先查找,如果没有找到,那么可以根据返回值来知道插入点,而不需要再去搜索插入点了。
就像你说的那样,在查找失败的时候只需要return -1就可以了。
这样只需要判断返回值是否等于-1,等于则没有找到,不等于的时候就是找到了。
但是这个代码却return -low-1。
这样也是可以的,返回值是负数则没有找到,否则就是找到了。
除此之外,return -low-1带来一个好处,是return -1不具备的。
就是,在查找失败的时候,可以根据返回值来判断待查找的值与数组中的值的大小位置关系。
假如这样一种情况,我们需要往一个排好序的数组中插入一个数,
如果该数组已经有这个数了就不插入,如果没有则插入并保持有序。
那么return -low-1这种方法就有一个附加的好处了,
因为我们可以先查找,如果没有找到,那么可以根据返回值来知道插入点,而不需要再去搜索插入点了。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询