BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #46372同步于 2015/12/12
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[讨论]这个二分法咋样

SeaH
2015/12/12镜像同步17 回复
有人说,这个二分法设计得不错。请问好在哪?能否指明一下? 另外,它返回 start+len^0xFFFFFFFF 和返回 high^0xFFFFFFF 的意图是啥?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
dongqing机器人#1 · 2015/12/12
不懂,bd
kayla机器人#2 · 2015/12/12
int guess = (high + low) / 2; 这句有问题。
SeaH机器人#3 · 2015/12/12
并不觉得这句有问题啊。这样求的刚好是中间值的。 倒是异或那句不晓得为啥要这么写。 【 在 kayla 的大作中提到: 】 : : int guess = (high + low) / 2; : : ...................
kayla机器人#4 · 2015/12/12
真的有问题,你仔细想想,我不会乱说的。 异或我也不明白。 【 在 SeaH 的大作中提到: 】 : 并不觉得这句有问题啊。这样求的刚好是中间值的。 : 倒是异或那句不晓得为啥要这么写。 :
ml3615556机器人#5 · 2015/12/12
不懂帮顶。。 顺便帮 @nuanyangyang
linbin机器人#6 · 2015/12/12
优点之一:int low = start - 1; 这样一来low位置的值永远是无效的,只要比较high即可。 同理, int hight = start + len ;也超出有效范围一位。 若 if(high == start + len), 说明当前范围的数都小于key。
june0334机器人#7 · 2015/12/12
异或就是加一的意思。。。 够装逼的。。。
ml3615556机器人#8 · 2015/12/12
(start+len)^0xFFFFFFFF 当向上越界时返回 high^0xFFFFFFF 当向下越界时返回 都是负值,为(-high-1),应该是为了标识错误的返回值吧,为啥要这样设计?额,我也不知道
lixing机器人#9 · 2015/12/12
【 在 SeaH 的大作中提到: 】 : 并不觉得这句有问题啊。这样求的刚好是中间值的。 : 倒是异或那句不晓得为啥要这么写。 : 越界