Java I';I’我很难让MergeSort正常工作

Java I';I’我很难让MergeSort正常工作,java,Java,到目前为止,我有以下代码: public class MergeSort { int[] theList; int counter; //required for analysis later double time; //required for analysis later MergeSort(int[] n){ int len = n.length; this.theList = mergeSort(n, 0, len); } int[] mergeSort(int

到目前为止,我有以下代码:

public class MergeSort {
int[] theList;
int counter;  //required for analysis later
double time;  //required for analysis later

MergeSort(int[] n){
    int len = n.length;
    this.theList = mergeSort(n, 0, len);
}

int[] mergeSort(int[] n, int p, int r){
    if((p + 1 )<r){
        int q = (r + p)/2;
        mergeSort(n, p, q);
        mergeSort(n, q+1, r);
        merge(n, p, q, r);
    }
    return n;

}
public void merge(int[] input, int p, int q, int r){
    int lefti = q - p;
    int righti = r - q;
    int[] left = new int[lefti+1];
    int[] right = new int[righti+1];
    for(int i = 0; i < lefti; i++){
        this.counter++;
        left[i] = input[p+i];
    }
    for(int i = 0; i < righti; i++){
        this.counter++;
        right[i] = input[q+i];
    }
    left[left.length - 1] = 1000000;
    right[right.length - 1] = 1000000;
    int i = 0;
    int j = 0;
    for(int k = p; k < r; k++){
        this.counter++;
        if(left[i] < right[j]){
            input[k] = left[i];
            i++;
        }
        else{
            input[k] = right[j];
            j++;
        }
    }
}
公共类合并排序{
int[]列表;
int counter;//以后分析时需要
加倍时间;//需要稍后进行分析
合并排序(int[]n){
int len=n.长度;
this.theList=mergeSort(n,0,len);
}
int[]合并排序(int[]n,int p,int r){

如果((p+1)看起来您需要mergeSort方法的基本情况。如果(p+1)>=r,则对子数组进行排序(即,子数组的大小应为1或2,如果子数组的大小为1,则不执行任何操作,如果子数组的大小为2,则交换这两个值,如果它们的顺序不正确)

您是否尝试过使用调试器?数组索引中存在一些问题……。您可以参考coreman之类的任何书籍。