求中间值写法的优化

int low;

int high;

int mid;

1 常规写法:

  mid = (low + high) / 2;   // 两数较大的话,中间结果值(low + high)可能发生溢出

2 改进:

  mid = low + (high - low) / 2; // 在较小数的基础上加上一个值,避免产生较大的中间值。显然 (high - low)/2  < high, high>=low>=0.

3 利用位运算进一步提高效率:

  // 算术右移(高位补符号位) 1位相当于除以2。

  mid = low + ((high - low) >> 1); // 移位操作一定要加圆括号,因为加法操作优先级高于移位操作。

posted @ 2020-11-28 22:09  windlike  阅读(103)  评论(0编辑  收藏  举报