(l + r) / 2转换成l + (r -l)/2

来源:5-1 二分查找法(Binary Search)

Haoming_C

2019-11-08

(l + r) / 2转换成l + (r -l)/2 是考虑到l + r相加的时候溢出,那l/2 + r/2不就可以了?

写回答

1回答

liuyubobobo

2019-11-09

因为计算机的运算是整数除法,所以 (l + r) / 2 和 l / 2 + r / 2 可能不等价。


比如 l = 3, r = 21。 

(l + r) / 2 = (21 + 3) / 2 = 24 / 2 = 12;

l + (r - l) / 2 = 3 + (21 - 3) / 2 = 3 + 18 / 2 = 3 + 9 = 12;

l / 2 + r / 2 = 3 / 2 + 21 / 2 = 1 + 10 = 11


继续加油!:) 

3
5
liuyubobobo
回复
相信光变成光
赞!:)
2021-01-25
共5条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程