返回信息流有人说,这个二分法设计得不错。请问好在哪?能否指明一下?
另外,它返回 start+len^0xFFFFFFFF 和返回 high^0xFFFFFFF 的意图是啥?
这是一条镜像帖。来源:北邮人论坛 / java / #46372同步于 2015/12/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖
[讨论]这个二分法咋样
SeaH
2015/12/12镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
并不觉得这句有问题啊。这样求的刚好是中间值的。
倒是异或那句不晓得为啥要这么写。
【 在 kayla 的大作中提到: 】
: : int guess = (high + low) / 2;
:
: ...................
真的有问题,你仔细想想,我不会乱说的。
异或我也不明白。
【 在 SeaH 的大作中提到: 】
: 并不觉得这句有问题啊。这样求的刚好是中间值的。
: 倒是异或那句不晓得为啥要这么写。
:
优点之一:int low = start - 1; 这样一来low位置的值永远是无效的,只要比较high即可。
同理, int hight = start + len ;也超出有效范围一位。
若 if(high == start + len), 说明当前范围的数都小于key。
(start+len)^0xFFFFFFFF 当向上越界时返回
high^0xFFFFFFF 当向下越界时返回
都是负值,为(-high-1),应该是为了标识错误的返回值吧,为啥要这样设计?额,我也不知道