Create a program named MergeSort.java then copy the following code to your program: mergeSort.txt Write a main method that accepts three numbers N, A, B (assume A Assign random numbers between [A, B] to each of the N elements of the array. Call mergeSort method to sort the array. Write instructions to record the time spent on sorting. (Optional) you may write code to verify the array was sorted successfully. Once completed, test your program with different numbers N, A, B and screenshot your result. Your result should include the number of elements and sorting time. mergeSort.txt public static void mergeSort(int[] arr){ mergeSortRec(arr, 0, arr.length-1); } private static void mergeSortRec(int[] arr, int first, int last){ if(first int mid=(first+last)/2; mergeSortRec(arr, first, mid); mergeSortRec(arr, mid+1,last); merge(arr, first, mid, mid+1, last); } } private static void merge(int[] arr, int leftFirst, int leftLast, int rightFirst, int rightLast){ int[] aux=new int[arr.length]; //extra space, this is downside of this algorithm int index=leftFirst; int saveFirst=leftFirst; while(leftFirst<=leftLast && rightFirst <=rightLast){ if(arr[leftFirst]<=arr[rightFirst]){ aux[index++]=arr[leftFirst++]; }else{ aux[index++]=arr[rightFirst++]; } } while(leftFirst<=leftLast){ aux[index++]=arr[leftFirst++]; } while(rightFirst<=rightLast) aux[index++]=arr[rightFirst++]; for(index=saveFirst; index<=rightLast; index++) arr[index]=aux[index]; }
- Create a program named MergeSort.java then copy the following code to your program:
- mergeSort.txt
- Write a main method that accepts three numbers N, A, B (assume A
- Assign random numbers between [A, B] to each of the N elements of the array.
- Call mergeSort method to sort the array.
- Write instructions to record the time spent on sorting.
- (Optional) you may write code to verify the array was sorted successfully.
- Once completed, test your program with different numbers N, A, B and screenshot your result. Your result should include the number of elements and sorting time.
mergeSort.txt
public static void mergeSort(int[] arr){
mergeSortRec(arr, 0, arr.length-1);
}
private static void mergeSortRec(int[] arr, int first, int last){
if(first int mid=(first+last)/2;
mergeSortRec(arr, first, mid);
mergeSortRec(arr, mid+1,last);
merge(arr, first, mid, mid+1, last);
}
}
private static void merge(int[] arr, int leftFirst,
int leftLast, int rightFirst, int rightLast){
int[] aux=new int[arr.length];
//extra space, this is downside of this
int index=leftFirst;
int saveFirst=leftFirst;
while(leftFirst<=leftLast && rightFirst <=rightLast){
if(arr[leftFirst]<=arr[rightFirst]){
aux[index++]=arr[leftFirst++];
}else{
aux[index++]=arr[rightFirst++];
}
}
while(leftFirst<=leftLast){
aux[index++]=arr[leftFirst++];
}
while(rightFirst<=rightLast)
aux[index++]=arr[rightFirst++];
for(index=saveFirst; index<=rightLast; index++)
arr[index]=aux[index];
}
Trending now
This is a popular solution!
Step by step
Solved in 2 steps with 5 images