Programa Javascript para programa para rotar cíclicamente una array en uno

Dada una array, gire cíclicamente la array en el sentido de las agujas del reloj en uno. 

Ejemplos:  

Input:  arr[] = {1, 2, 3, 4, 5}
Output: arr[] = {5, 1, 2, 3, 4}

Los siguientes son pasos. 
1) Almacene el último elemento en una variable, digamos x. 
2) Desplace todos los elementos una posición por delante. 
3) Reemplace el primer elemento de la array con x.
 

Javascript

<script>
 
// JavaScript code for program
// to cyclically rotate
// an array by one
function rotate(arr, n)
{
  var x = arr[n-1], i;
  for(i = n-1; i > 0; i--)
      arr[i] = arr[i-1];
  arr[0] = x;   
}
 
var arr = [1, 2, 3, 4, 5];
var n = arr.length;
 
document.write("Given array is <br>");
for(var i = 0; i< n; i++)
    document.write(arr[i] + " ");
     
rotate(arr, n);
 
document.write("<br>Rotated array is <br>");
for(var i = 0; i < n; i++)
    document.write(arr[i] + " ");
     
</script>
Producción

Given array is 
1 2 3 4 5 

Rotated array is
5 1 2 3 4 

Complejidad de tiempo: O(n) Como necesitamos iterar a través de todos los elementos 
Espacio auxiliar: O(1)
La pregunta anterior también se puede resolver usando el algoritmo de inversión .

Otro enfoque:

Podemos usar dos punteros, digamos i y j , que apuntan al primer y último elemento de la array, respectivamente. Como sabemos, en la rotación cíclica traeremos el último elemento al primero y desplazaremos el resto hacia adelante, así que comience a intercambiar arr[i] y arr[j] y mantenga j fijo y i moviéndose hacia j. Repita hasta que i no sea igual a j.

Javascript

<script>
// JavaScript code for program
// to cyclically rotate
// an array by one using pointers i,j
 
function rotate(arr, n){
    var i = 0
    var j = n-1
    while(i != j){
        let temp;
 
        temp = arr[i];
        arr[i] = arr[j];
        arr[j]= temp;
        i =i+1
    }
}
 
var arr = [1, 2, 3, 4, 5];
var n = arr.length;
 
document.write("Given array is <br>");
for(var i = 0; i< n; i++)
    document.write(arr[i] + " ");
     
rotate(arr, n);
 
document.write("<br>Rotated array is <br>");
for(var i = 0; i < n; i++)
    document.write(arr[i] + " ");
</script>
Producción

Given array is 
1 2 3 4 5 
Rotated array is
5 1 2 3 4 

Complejidad temporal: O(n)
Espacio auxiliar: O(1)

¡ Consulte el artículo completo sobre Programa para rotar cíclicamente una array en uno para obtener más detalles!

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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