Rotar un array

21/Sep/2010 Java , , , 6 Comentarios

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...

  1. 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:

  1. for(int x= 0; x<numeros.length-1; x++)
  2. 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.

  1. Guardarnos el primer elemento antes de entrar al bucle. Ya que en la primera iteración lo vamos a machacar
  2. Asignar el primer elemento a la última posición, una vez que hayamos salido del bucle

El código completo sería el siguiente:

  1. int primero = numeros[0];
  2. int x;
  3.  
  4. for(x= 0; x<numeros.length-1; x++)
  5. numeros[x] = numeros[x+1];
  6.  
  7. numeros[x]= primero;

Encapsulamos todos esto en un método...

  1. public static int[] rotar(int[] numeros){
  2. int primero = numeros[0];
  3. int x;
  4.  
  5. for(x= 0; x<numeros.length-1; x++)
  6. numeros[x] = numeros[x+1];
  7.  
  8. numeros[x]= primero;
  9.  
  10. return numeros;
  11. }

Y ahora utilizamos un bucle que llame al método rotar() para obtener todas las combinaciones posibles:

  1. for (int x=0;x<numeros.length;x++) {
  2. // Imprimir el array
  3. rotar(numeros);
  4. }

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.

Vídeos sobre Java


6 comentarios en “Rotar un array”

Víctor Cuervo

felipe

Amigo pero al hacer el metodo tienes que retornar un valor, si no habra un error contundente. segun tu logica, que aproposito es bastante buena pues si se hace haci, me podrias decir que valor retornas?

Víctor Cuervo

Víctor Cuervo

@felipe, cierto, había una errata en el artículo. Se retorna el array de números.

 return numeros;

Ya está corregido en el artículo. Gracias por el aviso.

Víctor Cuervo

Diana

Hola, tú me podrías decir como se haría este mismo ejercicio pero en PHP ?
gracias!

Víctor Cuervo

Víctor Cuervo

@diana, lo tienes explicado en http://lineadecodigo.com/php/rotar-un-array-en-php/
Espero que te sirva.

Víctor Cuervo

rocio

como puedo realizar movimientos de los elementos de una matriz en java. lo que pasa esque tengo que haces un el juego de damas españolas pero solo ouedo imprimir la matriz con sus elemnetos pero no puedo moverlos y hace que queden en diagonal para que puead ir acumulando .. nesesito ayuda!!!!

Víctor Cuervo

daniel iriarte garcia

soy un estudiante de primer ciclo de la universidad y estoy llevando algoritmos y nesecito hacer una tarea y no entiendo mucho donde podria encontrar ejercios o ayuda gracias

¿Algo que nos quieras comentar?

Déjanos tu comentario, no te preocupes que tu email no será publicado

*

*