I am facing a problem in Merge Sort coded in Java language. Please can you see where I am wrong because I am facing Index out of bounds problem. I am sharing the code. Please check !
The error in the output box is :
"Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1"
Code : code
import java.util.Arrays;
public class Sorting {
public static void main(String[] args) {
int[] arr = {5,3,4,7,2,8,6,9,1};
mergesort(arr);
}
static void mergesort(int[] arr){
mergesortalgorithm(arr,0, arr.length);
System.out.println("The sorted array is :" + Arrays.toString(arr));
}
static void mergesortalgorithm(int[] arr,int lb,int ub){
if (lb < ub){
int mid = (lb + ub)/2;
mergesortalgorithm(arr,lb,mid);
mergesortalgorithm(arr,mid + 1,ub);
merge(arr,lb,mid,ub);
}
}
static void merge(int[] arr,int lb,int mid,int ub){
int i = lb;
int j = mid + 1;
int k = 0;
int[] newarray = new int[lb + ub];
while (i <= mid && j <= ub){
if (arr[i] <= arr[j]){
newarray[k] = arr[i];
i++;
}
else {
newarray[k] = arr[j];
j++;
}
k++;
}
if (i > mid){
while (j <= ub){
newarray[k] = arr[j];
j++;
k++;
}
}
else {
while (i <= mid){
newarray[k] = arr[i];
i++;
k++;
}
}
for (int l = lb;l <= ub;l++){
arr[l] = newarray[l];
}
}
}