C program to left rotate an array – In this article, we will brief in on the various means to left rotate an array in C programming.
Suitable examples and sample programs have also been added so that you can understand the whole thing very clearly. The compiler has also been added with which you can execute it yourself.
The means used in this piece are as follows:
- Using Standard Method
- Using Function
An array, as we all know, is a sequential order of a bunch of elements in a horizontal fashion. These elements’ position is denoted by specific entities known as pointers. Arrays are one of the most essential parts of C programming.
As in the example given above, firstly, we have to enter the size of the array.
In this case, the size of the array specified is 5.
Then we have to enter the elements in the array.
The elements here are as follows:
1 2 3 4 5
Later, we have to specify the number of times we have to left rotate. The number cannot be greater than the number of elements.
Thus, by rotating the array 4 times, we get the new array:
5 1 2 3 4
Hence, doing the same in C programming is as follows:
Using Standard Method
- Store the array size into the variable n.
2) Read the entered array and store the elements in the array a[].
3) Read the k value, which represents how many numbers of times left rotate the given array.
4) Rotate the array to left for k times as follows, for loop iterates from i=0 to i<k
a) Assign starting element to temp.
b) Inner for loop iterates from j=0 to j<n-1
move a[j+1] to a[j].Repeat until j<n-1.
c) Assign temp to a[n-1]. Here we are assigning the first element to the last index.
Repeat these three steps until i<k.
5) After all iterations of i, print the array which is left rotated.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#include <stdio.h> #include <conio.h> int main() { int a[10000],i,n,j,k,temp; printf("Enter size of the array : "); scanf("%d", &n); printf("Enter elements in array : "); for(i=0; i<n; i++) { scanf("%d",&a[i]); } printf("how many times left rotate : "); scanf("%d", &k); for(i=0; i<k; i++) { temp=a[0]; for(j=0; j<n-1; j++) { a[j]=a[j+1]; } a[n-1]=temp; } printf("\narray elements after left rotate : "); for(i=0; i<n; i++) { printf("%d ",a[i]); } } |
Output:
1 2 3 4 5 |
Enter size of the array: 5 Enter elements in array : 1 2 3 4 5 how many times left rotate: 4 array elements after left rotate : 5 1 2 3 4 |
Using Function
- The main() calls the leftrotate() function, passing array,size of the array, k as arguments.
2) The leftrotate() function rotates the array to left for k times as follows,
for loop iterates from i=0 to i<k
a) assign the first element to temp,
b) Inner for loop iterates from j=0 to j<n-1
move the the element a[j+1] to a[j].Repeat this step until j<n-1.
c) Assign temp to a[n-1].
Repeat these three steps until i<k.
3) After all iterations of i, the main() call the print() to print the left rotated array elements.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#include <stdio.h> #include <conio.h> int leftrotate(int *a,int n,int k) { int i,j,temp; for(i=0; i<k; i++) { temp=a[0]; for(j=0; j<n-1; j++) { a[j]=a[j+1]; } a[n-1]=temp; } } print(int *a,int n) { int i; for(i=0; i<n; i++) { printf("%d ",a[i]); } } int main() { int a[10000],i,n,j,k,temp; printf("Enter size of the array : "); scanf("%d", &n); printf("Enter elements in array : "); for(i=0; i<n; i++) { scanf("%d",&a[i]); } printf("how many times left rotate : "); scanf("%d", &k); leftrotate(a,n,k); printf("\narray elements after left rotate : "); print(a,n); } |
Output:
1 2 3 4 5 |
Enter size of the array: 5 Enter elements in array : 1 2 3 4 5 how many times left rotate: 4 array elements after left rotate : 5 1 2 3 4 |