Java 合并排序不起作用

Java 合并排序不起作用,java,mergesort,Java,Mergesort,我正在尝试实现mergesort,但我不确定错误是什么。我确信我的逻辑是正确的,但我把索引搞乱了。非常感谢您的反馈: public static void mergeSort(long[] arr, int low, int high) { if (low < high) { int mid = (high + low) / 2; mergeSort(arr, low, mid); mergeSort(arr, mid+1, hig

我正在尝试实现mergesort,但我不确定错误是什么。我确信我的逻辑是正确的,但我把索引搞乱了。非常感谢您的反馈:

public static void mergeSort(long[] arr, int low, int high) {
    if (low < high) {

        int mid = (high + low) / 2;
        mergeSort(arr, low, mid);
        mergeSort(arr, mid+1, high);
        merge(arr, low, mid, high);
    }
}

public static void merge(long[] arr, int low, int mid, int high) {
    long[] tmp = new long[arr.length];
    //System.out.println((high-low+1)==arr.length);
    System.arraycopy(arr, 0, tmp, 0, arr.length);
    int i = low;
    int j = mid + 1;
    int k = 0;
    while (i <= mid && j <= high) {
        if (tmp[i] <= tmp[j]) {
            arr[k] = tmp[i];
            i++;
        } else {
            arr[k] = tmp[j];
            j++;
        }
        k++;
    }


    while (i <= mid) {

        arr[k] = tmp[i];
        i++;
        k++;
    }

    while (j <= high) {

        arr[k] = tmp[j];
        j++;
        k++;
    }

}

对不起,以前的工作服看起来不怎么样

现在我发现了你的bug,并测试了它

他来了

int k = 0;
应该是

int k = i;

你能写下你的错误吗?他们说的是什么?这不是一个错误。我的输出不正确。哦,哇!!非常感谢!!!: