我正在学习Java,并制作了此合并排序程序,但是它抛出ArrayOutOfBound
的异常。我的错是什么?
我也在array.length
或array.length-1
处也使用了此代码,但两种情况均失败。看来我的代码不接受数组的长度。
//分割数组-]
void divide(int a[], int lb, int ub) { if (lb < ub) { int mid = (lb + ub) / 2; divide(a, lb, mid); divide(a, mid + 1, ub); merge(a, lb, mid, ub); } }
//用于打印实际数组---
static void ActualArray(int a[]) { System.out.println("----!!!Merge Sort!!!----"); System.out.println("Your Array is: "); for (int i : a) { System.out.print(i + " "); } System.out.println("\n"); }
//用于合并数组
void merge(int a[], int lb, int mid, int ub) { int i = lb; int j = mid + 1; int k = lb; int b[] = {}; while (i <= mid && j <= ub) { if (a[i] < a[j]) { b[k] = a[i]; i++; } else { b[k] = a[j]; j++; } k++; } if (i > mid) { while (j <= ub) { b[k] = a[j]; j++; k++; } } else { while (i <= mid) { b[k] = a[i]; i++; k++; } } System.out.println("Your Sorted Array is: "); for (int ele : b) { System.out.print(ele + " "); } }
//主要方法
public static void main(String args[]) {
int arr[] = { 25, 16, 45, 17, 84, 61 };
ActualArray(arr);
MergeSort obj = new MergeSort();
obj.divide(arr, 0, arr.length - 1);
}
我正在学习Java,并制作了此合并排序程序,但它引发ArrayOutOfBound异常。我怎么了我也在array.length或array.length-1上使用了此代码,但是两种情况都是...
merge
方法中存在多个问题: