Java Mergesort实现不正确
我一直在尝试编写一个基本的自顶向下的mergesort,但在代码执行完毕后,数组并没有完全排序。我已经试过调试它,但是所有的递归使得它很难精确定位。我还尝试将我的代码与其他mergesort示例进行比较,但没有发现任何差异Java Mergesort实现不正确,java,algorithm,sorting,debugging,mergesort,Java,Algorithm,Sorting,Debugging,Mergesort,我一直在尝试编写一个基本的自顶向下的mergesort,但在代码执行完毕后,数组并没有完全排序。我已经试过调试它,但是所有的递归使得它很难精确定位。我还尝试将我的代码与其他mergesort示例进行比较,但没有发现任何差异 private void mergeSort(int[] arr) { int[] aux = new int[arr.length]; sort(arr, aux, 0, arr.length - 1); } pri
private void mergeSort(int[] arr) {
int[] aux = new int[arr.length];
sort(arr, aux, 0, arr.length - 1);
}
private void sort(int[] arr, int[] aux, int lo, int hi) {
if(hi <= lo)
return;
int mid = lo + ((hi - lo) / 2);
sort(arr, aux, lo, mid);
sort(arr, aux, mid + 1, hi);
merge(arr, aux, lo, mid, hi);
}
private void merge(int[] arr, int[] aux, int lo, int mid, int hi) {
for(int i = lo;i <= hi;i++)
aux[i] = arr[i];
int x = lo;
int y = mid + 1;
for(int i = lo; i <= hi; i++){
if(x > mid) arr[i] = aux[y++];
else if(y > hi) arr[i] = aux[x++];
else if(aux[y] < aux[i]) arr[i] = aux[y++];
else arr[i] = aux[x++];
}
}
private void合并排序(int[]arr){
int[]aux=新int[arr.length];
排序(arr,aux,0,arr.length-1);
}
私有无效排序(int[]arr,int[]aux,int lo,int hi){
如果(hi改变
else如果(aux[y]
到
else如果(aux[y]
注意辅助[x]更改
else if(aux[y] < aux[i]) arr[i] = aux[y++];
else如果(aux[y]
到
else如果(aux[y]
注释aux[x]
else if(aux[y] < aux[x]) arr[i] = aux[y++];