问题描述
我在理解此递归代码时遇到了一些麻烦:
class Main {
public static void main(String[] args) {
int[] intArray = { 20,35,-15,7,55,1,-22 };
mergeSort(intArray,intArray.length);
for (int i = 0; i < intArray.length; i++) {
System.out.println(intArray[i]);
}
}
// { 20,-22 }
public static void mergeSort(int[] input,int start,int end) {
if (end - start < 2) {
return;
}
int mid = (start + end) / 2;
mergeSort(input,start,mid);
mergeSort(input,mid,end);
merge(input,end);
}
// { 20,-22 }
public static void merge(int[] input,int mid,int end) {
if (input[mid - 1] <= input[mid]) {
return;
}
int i = start;
int j = mid;
int tempIndex = 0;
int[] temp = new int[end - start];
while (i < mid && j < end) {
temp[tempIndex++] = input[i] <= input[j] ? input[i++] : input[j++];
}
System.arraycopy(input,i,input,start + tempIndex,mid - i);
System.arraycopy(temp,tempIndex);
}
}
有人可以帮我确定代码中的操作顺序吗?当我们调用mergeSort时,我们是在同步完成函数还是在进行下一步并稍后再返回?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)