public void merge(int start, int middle, int end) {
        int posLeft = start, posRight = middle;

        while (posLeft != posRight && posRight < end) {
            if (array[posLeft] > array[posRight]) {
                int temp = array[posRight];
                System.arraycopy(array, posLeft, array, posLeft + 1, posRight
                        - posLeft);
                array[posLeft] = temp;
                ++posRight;
            }
            ++posLeft;
        }
    }