En este ejemplo sobre rotar un array lo que pretendemos hacer con el siguiente código es rotar los elementos dentro de un array con Java. Es decir, pasar cada elemento a su posición anterior y el primer elemento a la última posición. Es decir, si tenemos un array de enteros…
int[] numeros = {1,2,3,4,5};
Conseguir que salgan las secuencias…
{1,2,3,4,5} {2,3,4,5,1} {3,4,5,1,2} {4,5,1,2,3} {5,1,2,3,4}
Como hemos comentado, rotar un array significa el mover un elemento a su posición anterior. Esto lo podemos hacer con un bucle for:
for(int x= 0; x<numeros.length-1; x++) numeros[x] = numeros[x+1];
Apreciar que solo se mueve hasta el tamaño-1. Para no caer en una excepción ArrayIndexOutOfBoundsException. Y es que la última posición de array se la asignaremos al primero. Para ello hay que tener en cuenta dos acciones.
- Guardarnos el primer elemento antes de entrar al bucle. Ya que en la primera iteración lo vamos a machacar
- Asignar el primer elemento a la última posición, una vez que hayamos salido del bucle
El código completo sería el siguiente:
int primero = numeros[0]; int x; for(x= 0; x<numeros.length-1; x++) numeros[x] = numeros[x+1]; numeros[x]= primero;
Encapsulamos todos esto en un método…
public static int[] rotar(int[] numeros){ int primero = numeros[0]; int x; for(x= 0; x<numeros.length-1; x++) numeros[x] = numeros[x+1]; numeros[x]= primero; return numeros; }
Y ahora utilizamos un bucle que llame al método rotar() para obtener todas las combinaciones posibles:
for (int x=0;x<numeros.length;x++) { // Imprimir el array rotar(numeros); }
Aunque he utilizado un array de números enteros, este código, modificándolo un poco se puede utilizar para cualquier otro tipo de datos para poder rotar un array.