package Sorting; public class NumberMergeSorter extends Sorter{ public NumberMergeSorter(RandomNumberFileReader reader){ super("merge sort",reader); } void sort(){ mergeSort(0,numbers.length-1); } void mergeSort(int leftIndex, int rightIndex){ if(compare(leftIndex,rightIndex)<0){ int middleIndex = (leftIndex+rightIndex)/2; mergeSort(leftIndex,middleIndex); mergeSort(middleIndex+1,rightIndex); merge(leftIndex,middleIndex,rightIndex); } } /** * merges subarray from leftIndex...middleIndex with subarray from middleIndex+1...rightIndex * @param leftIndex * @param middleIndex * @param rightIndex */ void merge(int leftIndex, int middleIndex, int rightIndex){ int sizeLeft=middleIndex-leftIndex+1;//add 1 to include both endpoints int sizeRight=rightIndex-middleIndex;//both endpoints already included, as middleIndex is part of left array Integer[] left=new Integer[sizeLeft]; Integer[] right=new Integer[sizeRight]; for(int i=0;i