老师你说的中间值不对的 是不是这个

老师你说的中间值不对的 是不是这个

int k=(2000000000+600000000)/2;
System.out.println(k);
int d=2000000000+(600000000-2000000000)/2;
System.out.println(d);

第一个结果:-847483648

第二个结果:1300000000


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
liuyubobobo 2020-08-31 05:46:19

抱歉,没看懂你的问题,是不是哪个?

  • 波波老师,我也是跟他一样的问题: 已知 L 和 R, 求中间值 mid,您在MergeSort中用的是:mid = L + (R - L) / 2,而还有另一种表达式是:mid = (L + R) / 2。 在这里,我想说说上面那位同学那种情况的原因: 表达式 mid = (L + R) / 2 在 L 和 R 都比较大时,L+R容易溢出(int 范围是21亿左右),而老师的那种表达式 mid = L + (R - L) / 2 则避免了溢出问题。 波波老师在前面的课程中提到过这个问题。以上
    2020-09-14 20:53:17
  • liuyubobobo 回复 LanceMai #2
    我还是没有看懂,你的这段解释就是我课程讲的内容。所以你没有问题是把?
    2020-09-15 05:41:54
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
算法与数据结构
  • 参与学习       2583    人
  • 解答问题       1082    个

慕课网算法名师Liuyubobobo,5年集大成之作 从0到工作5年,算法与数据结构系统解决方案

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师