0
在二进制搜索的执行为什么这个二进制搜索执行导致溢出
int search(int[] A, int K) {
int l = 0;
int u = A.length - 1;
int m
while (l <= u) {
m = (l+u)/2; // why this can cause overflow
...
}
}
正确的方法如下:
m = l + (u -l)/2;
我不知道为什么更新语句没有溢出问题。根据我的理解, 不久或更晚,更新后的语句也会有溢出问题。
谢谢
你能解释如何更新语句溢出 – 2011-01-21 23:15:39
你不是说:m =(1 +(u-1))/ 2; ? – 2011-01-21 23:17:52