Я учусь 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);
}