Merge Sort java with a few details please include comments i
Merge Sort java with a few details, please include comments if possible
Generate an array with 100 random integers between 0 and 1000 Print the original array to the screen Use your merge sort algorithm to sort the array from lowest to highest Print the sorted array to the screenSolution
/* Class name MergeSortRandomNumber.java */
import java.util.Random;
public class MergeSortRandomNumber{
private int[] array;
private int[] tempMergArr;
private int length;
public static void main(String[] args) {
int inputArr[] =new int[10];// Storing array elements default 10 we can modify depends on requirement
Random r = new Random();//Create Object for Random Predefined class
System.out.println(\"Random Numbers\");//Printing Random Numbers
for(int i=0;i<10;i++)
{
int Low = 0;//Start from 0
int High = 100;//Up to 100
int Result = r.nextInt(High-Low) + Low;
System.out.print(Result);//Prining on the console random numbers
System.out.print(\" \");
inputArr[i]=Result;
}
System.out.println(\"\");
System.out.println(\"Input Array\");//Printing input array on the console start
for(int i=0;i<10;i++)
{
System.out.print(inputArr[i]);//
System.out.print(\" \");
} //Printing input array on the console end
System.out.println(\"\");
System.out.println(\"After Merge sort from low to high\");
//merge Sort Main logic started
RandomNumber mms = new RandomNumber();
mms.sort(inputArr);//Passing our input array calling sort() method
for(int i:inputArr){
System.out.print(i);//printing Final values from low to high
System.out.print(\" \");
}
}
public void sort(int inputArr[]) {
this.array = inputArr;
this.length = inputArr.length;
this.tempMergArr = new int[length];
doMergeSort(0, length - 1);//Calling Merge sort main logic
}
private void doMergeSort(int lowerIndex, int higherIndex) {
if (lowerIndex < higherIndex) {
int middle = lowerIndex + (higherIndex - lowerIndex) / 2;
// Below step sorts the left side of the array
doMergeSort(lowerIndex, middle);
// Below step sorts the right side of the array
doMergeSort(middle + 1, higherIndex);
// Now merge both sides
mergeParts(lowerIndex, middle, higherIndex);
}
}
private void mergeParts(int lowerIndex, int middle, int higherIndex) {
//Compare elements at First and Second,
//and move smaller element at Merged array
for (int i = lowerIndex; i <= higherIndex; i++) {
tempMergArr[i] = array[i];
}
int i = lowerIndex;
int j = middle + 1;
int k = lowerIndex;
while (i <= middle && j <= higherIndex) {
if (tempMergArr[i] <= tempMergArr[j]) {
array[k] = tempMergArr[i];
i++;
} else {
array[k] = tempMergArr[j];
j++;
}
k++;
}
while (i <= middle) {
array[k] = tempMergArr[i];
k++;
i++;
}
}
}
=============================
Expected Out put
Random Numbers
19 95 97 32 86 36 48 34 46 71
Input Array
19 95 97 32 86 36 48 34 46 71
After Merge sort from low to high
19 32 34 36 46 48 71 86 95 97

