更安全的求中间值

 

1. 数组 arr,起始位置是 L, 终点位置 R

常规写法

int mid = (L + R) /  2;

更安全的写法

int mid = L + ((R - L)  >> 1)

 

 

2. 如何获得数据的长度

new int[R - L + 1]

 

3. 步长乘二的安全方式

不安全,可能溢出,因为 int 的最大值是 2的31 - 1

当step等于2的30次方时,*2等于 2的 31次方了 会溢出

 

安全

step *= 2

if(step >= (N >> 2)){

break;

}else{

step *=2;

}

 

posted @ 2023-03-20 07:32  Minde  阅读(25)  评论(0)    收藏  举报