Hey all I have been working on a merge sorter app with java in Eclipse. For some reason I can't figure it out and it is making me mad...
This is the main file I am working with
public class MergeSorter {
public Integer[] sort(Integer[] array) {
return mergesort(array);
}
private Integer[] mergesort(Integer[] array) {
if(array.length > 1) {
Integer[] left = new Integer[array.length /2];
Integer[] right = new Integer[array.length - left.length];
mergesort(left);
mergesort(right);
merge(left, right);
}
return array;
}
public Integer[] merge(Integer[] left, Integer[] right) {
int leftI = 0;
int rightI = 0;
int newI = 0;
Integer[] newArr = new Integer[left.length + right.length];
while (leftI < left.length && rightI < right.length) {
if (left[leftI] < right[rightI]) {
newArr[newI] = left[leftI];
leftI++;
} else {
newArr[newI] = right[rightI];
rightI++;
}
newI++;
}
// Either the left or the right may still have elements
for (int i = leftI; i < left.length; i++) { // left
newArr[newI] = left[i];
newI++;
}
for (int i = rightI; i < right.length; i++) { // right
newArr[newI] = right[i];
newI++;
}
return newArr;
}
public void printCollection(Integer[] items) {
for (int i = 0; i < items.length; i++) {
System.out.print(items[i] + " ");
}
System.out.println();
}
}
There is also a driver file that has everything done it it to run this code. I was told I need to genercize the merger sorter class to using arrayLists rather than arrays, but I am lost on how to do so. I am thinking this is where i need to use the List ? but not sure on it, any help is appreciated