private void mergeSort(E[] array, int begin, int end) {
        if (end > begin) {
            int center = (begin + end) / 2;
            mergeSort(array, begin, center);
            mergeSort(array, center + 1, end);
            merge(array, begin, center, end);
        }
    }