关于偏移量的问题

来源:1-3 实现归并过程

warren_au

2020-09-16 19:18:47

private static <E extends Comparable<E>> void merge(E[] arr,int l,int mid,int r)

这里的l和r是指索引吧,如果是索引的话,传进来的不应该都是0开始r结束吗,因为要给整个数组进行排序,复制整个数组的话,这样的话上面所提到的偏移量是否就不需要了呢,

根据E[] temp = Arrays.copyOfRange(arr, l, r + 1);这个函数只是开辟一个0至r-l+1的空间的话

如果不是的话还是不太理解这个偏移量

写回答

1回答

liuyubobobo

2020-09-17

l 和 r 是索引,但 l 不一定是 0。


可以参考这里:https://class.imooc.com/course/qadetail/250596


我更建议的是,使用一个小规模的数据,比如只含有 8 个元素的数据,实际模拟一下,看一看每次在 merge 中,l 是谁,r 是谁?merge 到底在做什么。


或者使用你觉得正确的方式编写程序,然后实际去运行程序,看一下程序运行的结果是否正确?如果不正确,使用小规模的数据去跟踪,看一看为什么不正确?


这是学习算法乃至学习编程最重要的方式。进步就在这个过程中哦。


加油!:)

0

算法与数据结构

波波老师5年集大成之作,算法与数据结构系统学习,考试、面试、竞赛通用

2610 学习 · 1087 问题

查看课程