JAVA-mergeSort 返回数组

JAVA-mergeSort returning array

自从我返回一个数组以来,我的 mergesort() 实现一直遇到问题,我在 mergesort() 中遇到 Whosebug 错误。我的 merge() 工作正常这是一个小剪辑我的整个程序有一个 ArraytoString() 工作正常并打印到控制台我在 alsp 中添加我不允许更改实现类型就像必须保留基本格式一样 {37, 27, 43, 3, 9, 81, 10}

    public static int[] merge(int[] arr1, int start, int mid, int end, int[] temp) {

    int beginHalf1 = start;
    int endHalf1 = mid;
    int beginHalf2 = mid+1;
    int endHalf2 = end;
    //if odd its mid half of
    int index = 0;
    //until arraysect runs out check which is smaller and send to temp
  while (beginHalf1 <= endHalf1 && beginHalf2 <= endHalf2){

    if(arr1[beginHalf1] <= arr1[beginHalf2]){

        temp[index] = arr1[beginHalf1];
        beginHalf1++;
    }else {//>=

        temp[index] = arr1[beginHalf2];
        beginHalf2++;
    }

    index++;
  }//pass leftover items to array
    if(beginHalf1>endHalf1){//right half not done

        while (beginHalf2<=endHalf2){

            temp[index] = arr1[beginHalf2];
            beginHalf2++;
            index++;
        }

    }else if(beginHalf2>endHalf2){ //left half not done

        while (beginHalf1<=endHalf1){

            temp[index] = arr1[beginHalf1];
            beginHalf1++;
            index++;
        }

    }
    return temp;
}


public static int[] mergeSort(int[] arr, int start, int end, int[] temp) {
    //arr unsorted returns sorted copy of that array
    //idk why it doesnt run

    if (start < end) {

        int mid = ((start + end) / 2)-1;//offset for mid for odd size

        mergeSort(arr, start, mid, temp);

        mergeSort(arr, mid + 1, end, temp);

        merge(temp, start, mid, end, temp);

    }

    return temp;//what do i return 

}
public static void main(String[] args) {

    int[] arr = {37, 27, 43, 3, 9, 81, 10};//3,9,10,27,39,43

    int length = sortedmerge.length/2-1;//-1 offset for mid


    arrayToString(mergeSort(arr,0,arr.length,new int[arr.length]));


}
if (start < end) {
    int mid = ((start + end) / 2) - 1; //offset for mid for odd size
    mergeSort(arr, start, mid, temp);
    mergeSort(arr, mid + 1, end, temp);
    merge(temp, start, mid, end, temp);
}

start 永远不会小于 mid 所以你对 mergeSort(arr, start, mid, temp); 的第一次调用似乎进入了导致计算器溢出的无限循环。