|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
int binarySearch(int
a[], int
key, int
length){ int
low = 0; int
high = length - 1; while
(low <= high) { int
mid = (low + high) / 2; int
midVal = a[mid]; if
(midVal < key) low = mid + 1; else
if (midVal > key) high = mid - 1; else return
mid;// key found } return
-(low + 1);// key not found} |
是在其他地方无意间看到这个BUG的。这个BUG曾经存在于JDK中,参见这里 (需翻墙)
看不出来BUG在哪里?
|
1
2 |
int mid = (low + high) / 2;<br> int
midVal = a[mid]; |
|
1 |
int mid = low+((high-low) / 2); |
原文:http://www.cnblogs.com/xibaohe/p/3651029.html