在看极客时间上王争老师的数据结构和算法课,15节二分查找,看到这段感觉受到启发,位运算右移一位就是除以2,例:1000(8) 0100(4) 0010(2)
实际上,mid=(low+high)/2 这种写法是有问题的。因为如果 low 和 high 比较大的话,两者之和就有可能会溢出。改进的方法是将 mid 的计算方式写成 low+(hgh-low)/2。更进一步,如果要将性能优化到极致的话,我们可以将这里的除以 2 操作转化成位运算 low+((high-low)>>1)。因为相比除法运算来说,计算机处理位运算要快得多。