替换 int mid = (L + R) >> 1 的写法,不安全,有溢出的风险!

pull/3/head
Leo 5 years ago
parent e4b6b6c2a8
commit 877b0a013d

@ -30,6 +30,7 @@ public class BSExist {
int mid = 0;
while (L < R) {
//右移一位表示除以2
//mid = (L + R) / 2; 不安全 有溢出的风险
mid = L + ((R - L) >> 1);
if (arr[mid] == value) {
return true;

@ -25,8 +25,10 @@ public class BSNear {
int index = -1;
int L = 0;
int R = arr.length - 1;
int mid = 0;
while (L <= R) {
int mid = L + ((R - L) >> 1);
//mid = (L + R) / 2; 不安全 有溢出的风险
mid = L + ((R - L) >> 1);
if (arr[mid] >= value) {
index = mid;
R = mid - 1;
@ -80,7 +82,8 @@ public class BSNear {
int R = arr.length - 1;
int mid = 0;
while (L <= R) {
mid = (L + R) >> 1;
//mid = (L + R) / 2; 不安全 有溢出的风险
mid = L + ((R - L) >> 1);
if (arr[mid] <= value) {
index = mid;
L = mid + 1;

Loading…
Cancel
Save