Cosa significa 'ruotare un array' in programmazione?
Rotare un array significa semplicemente spostare gli elementi dell'array a sinistra o a destra di n posizioni senza esaurire il "limite dell'array".
Immaginate di avere cinque scatole disposte come array lineare. In quelle scatole avete 5 palle di colore diverso per esempio. 1. rosso, 2. nero, 3. blu, 4. giallo, 5. verde. Devi ruotare la matrice di scatole a sinistra di 1 posizione.
Ma cos'è la rotazione? Una rotazione è un movimento circolare di un oggetto.
Ora rotazione a sinistra di 1 posizione significa spostare una palla in 1 casella a sinistra della sua casella originale.
Quindi, quando scegliamo la palla rossa non c'è nessuna casella a sinistra, ma immagina se colleghi l'inizio e la fine della matrice delle caselle l'ultima casella sarà a sinistra della prima casella. Quindi, spostamento rosso->5, nero->1, blu->2, giallo->3, verde->4.
Ora la scatola dell'array ruotata e la palla sarà come 1. nero, 2. blu, 3. giallo, 4. verde, 5. rosso.
Similmente, può essere fatto con rotazione destra.
Example :- Given Array is A[5]={1,2,3,4,5}, we have to left rotate it by 1 position then right rotate by 2 position.
After left rotation by 1 position A[5]={ 2,3,4,5,1}
After right rotation by 2 position A[5]= {5,1,2,3,4}.
There are various ways of doing so.
// Left Rotate element one by one. Where d is position by which element in array will be rotated and n is the size of array.
void leftRotate(int arr[], int d, int n)
{
int i;
for (i = 0; i < d; i++)
leftRotatebyOne(arr, n);
}
// Code for rotation
void leftRotatebyOne(int arr[], int n)
{
int i, temp;
temp = arr[0];
for (i = 0; i < n - 1; i++)
arr[i] = arr[i + 1];
arr[i] = temp;
}
There are many efficient ways to rotate an array.