关于偏移量的问题
来源: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 到底在做什么。
或者使用你觉得正确的方式编写程序,然后实际去运行程序,看一下程序运行的结果是否正确?如果不正确,使用小规模的数据去跟踪,看一看为什么不正确?
这是学习算法乃至学习编程最重要的方式。进步就在这个过程中哦。
加油!:)
相似问题