关于归并过程的偏移

关于归并过程的偏移

老师,我还是没太理解您说的为什么要做这个偏移量的判断,如果这个位置进行递归的话什么情况会出现出错的情况

正在回答

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

1回答

merge(E[] arr, int l, int mid, int r) 要处理的是 arr 从 l 到 r 的元素。


E[] temp = Arrays.copyOfRange(arr, l, r + 1); 一句话以后,temp 的索引范围是 0 到 r - l + 1。


比如 l = 4, r = 7。

得到的 temp 含有 4 个元素,即是 temp[4] 的。

temp[0] 对应 arr[4]

temp[1] 对应 arr[5]

temp[2] 对应 arr[6]

temp[3] 对应 arr[7]

他们之间有 4 的偏移,因此在下面的逻辑中,就要处理这个偏移。


试一试,如果不处理偏移,我们的算法会不会出问题?

如果出了问题,使用一个小数据,比如只包含 8 个测试用例的数据,实际单步跟踪一下,看一看问题出在哪里?为什么会有这样的问题?


加油!:)

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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