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
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 Java implementation of the above approach:
3 4 5 6 7 1 2
Time Complexity: O(n)
Please refer complete article on Reversal algorithm for array rotation for more details!
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.
- C Program for Reversal algorithm for array rotation
- Reversal algorithm for right rotation of an array
- Reversal algorithm for array rotation
- Java Program for Program for array rotation
- Block swap algorithm for array rotation
- Program for array rotation
- Java Program for KMP Algorithm for Pattern Searching
- Java Program for Naive algorithm for Pattern Searching
- Java Program for Rabin-Karp Algorithm for Pattern Searching
- Java Program for Dijkstra's shortest path algorithm | Greedy Algo-7
- Left rotation of an array using vectors in C++
- Circular rotation of an array using deque in C++
- Check for string rotation in Java
- 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
- Program to convert Array to Set in Java
- Java Program to find sum of array
- Java Program for GCD of more than two (or array) numbers
- Program to convert Array to List in Java