C program to right rotate an array
Learn how to write a C program to right rotate an array. This article provides a detailed explanation and sample code for right rotating array elements using a simple iterative approach.
Right rotating an array involves shifting the elements of the array to the right by a specified number of positions. This operation is useful in various applications such as data manipulation, cyclic shifts, and algorithm implementations. In this article, we will guide you through writing a C program to right rotate an array, providing a detailed explanation and sample code.
Steps to Right Rotate an Array
To right rotate an array, we can follow these steps:
- Input the Array: Read the array elements from the user.
- Input the Number of Rotations: Read the number of positions to rotate the array to the right.
- Perform the Rotation: Shift the elements of the array to the right and move the last elements to the beginning of the array.
- Print the Result: Output the rotated array to the console.
Write a C program to right rotate an array
#include <stdio.h>
void rightRotate(int arr[], int size, int rotations) {
int temp[rotations];
// Adjust the number of rotations if it is greater than the size of the array
rotations = rotations % size;
// Store the last 'rotations' elements in a temporary array
for (int i = 0; i < rotations; i++) {
temp[i] = arr[size - rotations + i];
}
// Shift the rest of the array elements to the right
for (int i = size - 1; i >= rotations; i--) {
arr[i] = arr[i - rotations];
}
// Move the temporary array elements to the beginning of the array
for (int i = 0; i < rotations; i++) {
arr[i] = temp[i];
}
}
int main() {
int size, rotations;
// Input size and elements of the array
printf("Enter the size of the array: ");
scanf("%d", &size);
int arr[size];
printf("Enter %d elements -\n", size);
for (int i = 0; i < size; i++) {
scanf("%d", &arr[i]);
}
// Input the number of rotations
printf("\nEnter the number of positions to rotate the array to the right: ");
scanf("%d", &rotations);
// Perform the right rotation
rightRotate(arr, size, rotations);
// Print the rotated array
printf("Array after right rotation: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
Output
Enter the size of the array: 5
Enter 5 elements -
3
5
6
2
1
Enter the number of positions to rotate the array to the right: 3
Array after right rotation: 6 2 1 3 5
Explanation
- Input the Array: The user inputs the size of the array and its elements.
- Input the Number of Rotations: The user inputs the number of positions to rotate the array to the right.
- Perform the Rotation:
- Adjust the number of rotations if it is greater than the size of the array.
- The last 'rotations' elements are stored in a temporary array.
- The remaining elements are shifted to the right.
- The elements in the temporary array are moved to the beginning of the array.
- Print the Result: The program prints the elements of the rotated array.
Detailed Steps
- Step 1: Input the Array
- The program prompts the user to enter the size of the array.
- The user inputs the array elements.
- Step 2: Input the Number of Rotations
- The program prompts the user to enter the number of positions to rotate the array to the right.
- Step 3: Perform the Rotation
- Adjust Rotations: If the number of rotations is greater than the size of the array, it is adjusted using modulo operation to avoid unnecessary full rotations.
- Store Elements in Temporary Array: The last 'rotations' elements are stored in a temporary array.
- Shift Elements Right: A loop runs from the end of the array to the beginning, shifting each element to the right by the number of rotations.
- Move Temporary Elements: Another loop runs to copy the elements from the temporary array to the beginning of the original array.
- Step 4: Print the Result
- The program prints the elements of the rotated array.