Una forma sencilla y rápida de aprender JAVA, observando y deduciendo cómo se comporta el lenguaje a través de ejemplos prácticos.

Archivo del blog

sábado, 2 de julio de 2016

Permutaciones: Sin repetición / Importa orden. (forma no recursiva)

Código:

//* Permutaciones (Forma no recursiva)
//- Importa posición
//- Sin repetición
package permutar3;

import java.util.Arrays;

public class Permutar3 {

    public static void main(String[] args) {
        int[] perm = {0, 1, 2, 3, 4, 5};
        do {
            System.out.println(Arrays.toString(perm));
        } while (nextPermutation(perm));
    }

    private static boolean nextPermutation(int[] array) {

        int i = array.length - 1;
        while (i > 0 && array[i - 1] >= array[i]) {
            i--;
        }

        if (i <= 0) {
            return false;
        }

        int j = array.length - 1;
        while (array[j] <= array[i - 1]) {
            j--;
        }

        int temp = array[i - 1];
        array[i - 1] = array[j];
        array[j] = temp;

        j = array.length - 1;
        while (i < j) {
            temp = array[i];
            array[i] = array[j];
            array[j] = temp;
            i++;
            j--;
        }
        return true;
    }
}


Resultado:

run:
[0, 1, 2, 3, 4, 5]
[0, 1, 2, 3, 5, 4]
[0, 1, 2, 4, 3, 5]
[0, 1, 2, 4, 5, 3]
[0, 1, 2, 5, 3, 4]
[0, 1, 2, 5, 4, 3]
[0, 1, 3, 2, 4, 5]
[0, 1, 3, 2, 5, 4]
...
...
...
[5, 4, 2, 3, 0, 1]
[5, 4, 2, 3, 1, 0]
[5, 4, 3, 0, 1, 2]
[5, 4, 3, 0, 2, 1]
[5, 4, 3, 1, 0, 2]
[5, 4, 3, 1, 2, 0]
[5, 4, 3, 2, 0, 1]
[5, 4, 3, 2, 1, 0]
BUILD SUCCESSFUL (total time: 0 seconds)


2 comentarios:

  1. Buenas tardes, muy bueno el código, muchas gracias! lo use como base para un programa, ahora solo tengo una cuestión, que debo modificar para que no muestre las combinaciones con iguales elementos? Me explico mejor, por ejemplo, si al empezar genera [a][b][c][d], que no muestre después, otra cadena igual pero en distinto orden, tipo [a][c][d][b]. Es para crear un programa para Combinaciones, en donde no se pueden repetir vectores con los mismos elementos. Muchas gracias, y sigue asi, esta genial el Blog, saludos cordiales desde Uruguay.

    ResponderEliminar

Con la tecnología de Blogger.