【发布时间】:2018-12-04 20:53:20
【问题描述】:
我已经为 java 中的 mergesort(recursive) 编写了代码。我尝试在 IntelliJ 中调试它,但它没有做任何事情
public class Main {
public static void main(String[] args) {
int[] ar = {20, 35, -15, 7, 55, 1, -22};
mergeSort(ar);
System.out.println(Arrays.toString(ar));
}
private static void mergeSort(int[] arra) {
int l=arra.length;
int mid = l/2;
int[] left= Arrays.copyOfRange(arra,0,mid);
int[] right= Arrays.copyOfRange(arra,mid,l);
mergeSort(left);
mergeSort(right);
merge(left,right,arra);
}
public static void merge(int[] ll,int[] rr,int[] array) {
int nl = ll.length;
int nr = rr.length;
int l=0;int r=0;int a=0;
while(l<=nl && r<= nr) {
array[a++]=ll[l]<=rr[r] ? ll[l++] : rr[r++];
}
if (l<nl) {
while (l <= nl)
array[a++] = ll[l++];
}
if (r<nr) {
while (r<=nr)
array[a++] = rr[r++];
}
}
问题似乎在第 21 行,即“mergesort(left);”
代码上也没有红色下划线,仍然没有,仍然没有结果。
【问题讨论】:
-
没有
if-else块是无限循环的完美秘诀。
标签: java algorithm recursion mergesort divide-and-conquer