/** * mergesort * * @param a - the array that will be sorted * @param begin - first index to be sorted * @param end - index behind the last element */ void mergesort(E[] a, int begin, int end) { // step if (end - begin < 2) return; else { int middle = begin + ((end - begin) / 2); mergesort(a, begin, middle); mergesort(a, middle, end); merge(a, begin, middle, end); } }