private void quicksort(Integer menor, Integer maior) throws NaoOrdenavel {
        Integer i = menor, j = maior;
        Elemento pivo = elementos[menor + (maior - menor) / 2];

        try {
            while (i <= j) {
                while (pivo.compareTo(elementos[i]) > 0) {
                    i++;
                }

                while (pivo.compareTo(elementos[j]) < 0) {
                    j--;
                }

                if (i <= j) {
                    trocar(i, j);
                    i++;
                    j--;
                }
            }
        } catch (Exception e) {
            throw new NaoOrdenavel("Conjunto não ordenável!");
        }

        if (menor < j) {
            quicksort(menor, j);
        }
        if (i < maior) {
            quicksort(i, maior);
        }
    }