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