Question: I need help in returning Yes. package mergeSort; public class MergeSortTest { private static void randomIntArray(Integer arr[], int min, int max) { int mn =
I need help in returning Yes.
package mergeSort;
public class MergeSortTest {
private static void randomIntArray(Integer arr[], int min, int max) {
int mn = Math.min(min, max);
int mx = Math.max(min, max) + 1;
for(int i = 0; i < arr.length; i++) {
int value = (int)(Math.random() * (mx - mn)) + mn;
arr[i] = Integer.valueOf(value);
}
}
private static void randomStringArray(String arr[], int min, int max) {
if(min < 0) {
throw new IllegalArgumentException("Min for randomStringArray must be >= 0");
}
int mn = Math.min(min, max);
int mx = Math.max(min, max) + 1;
char alphabet[] = "abcdefghijklmnopqrstuvwxyz".toCharArray();
for(int i = 0; i < arr.length; i++) {
String s = "";
int rLen = (int)(Math.random() * (mx - mn)) + mn;
for(int j = 0; j < rLen; j++) {
int rCharIdx = (int)(Math.random() * alphabet.length);
s += alphabet[rCharIdx];
}
arr[i] = s;
}
}
private static boolean isSorted(Object arr[]) {
for(int i = 0; i < arr.length - 1; i++) {
if(((Comparable) arr[i]).compareTo(arr[i+1]) > 0) {
return false;
}
}
return true;
}
public static void main(String args[]) {
Integer iArr[] = new Integer[1000];
randomIntArray(iArr, 0, 100);
MergeSort.sort(iArr);
System.out.println("MERGE SORT INTEGER ARRAY IS SORTED? " + (isSorted(iArr) ? "YES" : "NO"));
String sArr[] = new String[1000];
randomStringArray(sArr, 10, 20);
MergeSort.sort(sArr);
System.out.println("MERGE SORT STRING ARRAY IS SORTED? " + (isSorted(iArr) ? "YES" : "NO"));
}
}
package mergeSort;
public class MergeSort {
public static void sort(Object arr[]) {}
private static void mergeSort(Object arr[], Object tempArray[], int first, int last) {
if(first < last) {
int mid = first + (last - first) / 2;
mergeSort(arr, tempArray, first, mid);
mergeSort(arr, tempArray, mid + 1, last);
merge(arr, tempArray, first, mid, last);
}}
private static void merge(Object arr[], Object tempArray[], int first, int mid, int last) {
int beginHalf1 = first;
int endHalf1 = mid;
int beginHalf2 = mid + 1;
int endHalf2 = last;
int index = 0;
while(beginHalf1 <= endHalf1 && beginHalf2 <= endHalf2);
int res = ((Comparable) arr[beginHalf1]).compareTo(arr[beginHalf2]);
if(res <= 0) {
} else {
}
while(beginHalf1 <= endHalf1) {
tempArray[index] = arr[beginHalf1];
index ++;
beginHalf1++;
}
while(beginHalf2 <= endHalf2) {
tempArray[index] = arr[beginHalf2];
index++;
beginHalf2++;
for(int i = 0, j = first; i <= (last - first); i++, j++) {
arr[j] = tempArray[i];
}
}
}
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
