二分查找的mid值计算
mid=(low+high)/2;
这种写法是有问题的。因为如果 low 和 high 比较大的话,两者之和就有可能会溢出。
改进的方法是将 mid 的计算方式写成
mid=low+(high-low)/2;
更进一步,如果要将性能优化到极致的话,我们可以将这里的除以 2 操作转化成位运算
mid=low+((high-low)>>1);
因为相比除法运算来说,计算机处理位运算要快得多。
很大的数,不适合数组,数组是连续的内存空间,连续,所以二分查找的使用局限性之一。
太小也建议直接遍历,没必要二分查找。
二分查找比较适合静态有序的数组数据,这限制很大,但是只要适合的时候,性能就会很好。
原文:https://www.cnblogs.com/boziyouning/p/14584434.html