Saltar al contenido

¿Cómo podemos rotar un array ¿A la izquierda?

Contamos con tu apoyo para extender nuestras secciones referente a las ciencias informáticas.

Solución:

Girar a la izquierda por n es lo mismo que girar a la derecha por longitud-n.

Girar a la derecha (para n positivo):

for(int i = 0; i < data.length; i++)
    result[(i+n) % data.length ] = data[i];

Girar a la izquierda (para n positivo):

for(int i = 0; i < data.length; i++)
    result[(i+(data.length-n)) % data.length ] = data[i];

De esta manera puedes evitar un módulo de un número negativo.

Si desea ingresar un número entero n que gire a la derecha si n es positivo y a la izquierda si n es negativo, puede hacerlo así:

 int[] rotateArray(int n, int[] data)
 
      if(n < 0) // rotating left?
      
          n = -n % data.length; // convert to +ve number specifying how 
                                // many positions left to rotate & mod
          n = data.length - n;  // rotate left by n = rotate right by length - n
      
      int[] result = new int[data.length];
      for(int i = 0; i < data.length; i++)
          result[(i+n) % data.length ] = data[i];
      
      return result;
 

En caso de girar a la izquierda, puede usar esto para evitar un módulo de un número negativo:

int[] data = 1, 2, 3, 4, 5;
int[] result = new int[data.length];
for (int i = 0; i < data.length; i++) 
    result[(i + (data.length - 2)) % data.length] = data[i];


for (int i : result) 
    System.out.println(i);

Reseñas y valoraciones

Si crees que ha sido útil nuestro post, sería de mucha ayuda si lo compartieras con más juniors de esta forma contrubuyes a extender nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *