O que significa "rodar uma matriz" na programação?
Rotar um array significa simplesmente deslocar elementos de array para a esquerda ou para a direita por n posição sem esgotar o "limite de array".
Imagine que você tem cinco caixas dispostas como array linear . Nessas caixas você tem 5 bolas de cores diferentes, por exemplo. 1. vermelho, 2. preto, 3. azul, 4. amarelo, 5. verde. Você tem que rodar a matriz de caixas à esquerda por 1 posição.
Mas o que é rotação? Uma rotação é um movimento circular de um objecto.
Agora rotação à esquerda por 1 posição significa deslocar uma bola em 1 caixa para a sua caixa original.
Então, quando escolhemos a bola vermelha não sobra nenhuma caixa para ela, mas imagine que se ligar o início e o fim do conjunto de caixas, a última caixa será deixada para a primeira caixa. Assim, mude vermelho>5, preto>1, azul->2, amarelo->3, verde->4.
Agora a caixa de array rodou e a bola será como 1. preto, 2. azul, 3. amarelo, 4. verde, 5. vermelho.
Simplesmente, pode ser feito com a rotação correta.
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.