Write a function rotate(arr, d, n) that rotates arr of size n by d elements.
Input : arr = [1, 2, 3, 4, 5, 6, 7] d = 2 Output : arr = [3, 4, 5, 6, 7, 1, 2]
Rotation of the above array by 2 will make array
The first 3 methods to rotate an array by d elements has been discussed in this post.
Method 4 (The Reversal Algorithm) :
rotate(arr, d, n) reverse(arr, 1, d) ; reverse(arr, d + 1, n); reverse(arr, 1, n);
Let AB are the two parts of the input array where A = arr[0..d-1] and B = arr[d..n-1]. The idea of the algorithm is :
- Reverse A to get ArB, where Ar is reverse of A.
- Reverse B to get ArBr, where Br is reverse of B.
- Reverse all to get (ArBr) r = BA.
Let the array be arr = [1, 2, 3, 4, 5, 6, 7], d =2 and n = 7
A = [1, 2] and B = [3, 4, 5, 6, 7]
- Reverse A, we get ArB = [2, 1, 3, 4, 5, 6, 7]
- Reverse B, we get ArBr = [2, 1, 7, 6, 5, 4, 3]
- Reverse all, we get (ArBr)r = [3, 4, 5, 6, 7, 1, 2]
Below is the implementation of the above approach :
3 4 5 6 7 1 2
Time Complexity : O(n)
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
Don’t stop now and take your learning to the next level. Learn all the important concepts of Data Structures and Algorithms with the help of the most trusted course: DSA Self Paced. Become industry ready at a student-friendly price.
- Reversal algorithm for right rotation of an array
- C Program for Reversal algorithm for array rotation
- Java Program for Reversal algorithm for array rotation
- Block swap algorithm for array rotation
- Program for array rotation
- Left rotation of an array using vectors in C++
- Circular rotation of an array using deque in C++
- Left Rotation and Right Rotation of a String
- Print left rotation of array in O(n) time and O(1) space
- Find the Rotation Count in Rotated Sorted array
- Find starting index for every occurrence of given array B in array A using Z-Algorithm
- Median of an unsorted array using Quick Select Algorithm
- Queries for Count of divisors of product of an Array in given range | Set 2 (MO's Algorithm)
- Lexicographically minimum string rotation | Set 1
- Clockwise rotation of Linked List
- Sorting possible using size 3 subarray rotation
- Maximize count of corresponding same elements in given Arrays by Rotation
- Find a rotation with maximum hamming distance
- Queries for rotation and Kth character of the given string in constant time
- In-Place Algorithm