Print array after it is right rotated K times

11 Jun, 2022
Given an Array of size N and a values K, around which we need to right rotate the array. How to quickly print the right rotated array?Examples :  
Input: Array[] = {1, 3, 5, 7, 9}, K = 2.
Output: 7 9 1 3 5
Explanation:
After 1st rotation - {9, 1, 3, 5, 7}
After 2nd rotation - {7, 9, 1, 3, 5}

Input: Array[] = {1, 2, 3, 4, 5}, K = 4.
Output: 2 3 4 5 1      
 
Approach: 
We will first take mod of K by N (K = K % N) because after every N rotation array will become the same as the initial array.  Now, we will iterate the array from i = 0 to i = N-1 and check, If i < K, Print rightmost Kth element (a[N + i -K]). Otherwise,  Print array after ‘K’ elements (a[i – K]).  
We will first take mod of K by N (K = K % N) because after every N rotation array will become the same as the initial array.  
Now, we will iterate the array from i = 0 to i = N-1 and check, If i < K, Print rightmost Kth element (a[N + i -K]). Otherwise,  Print array after ‘K’ elements (a[i – K]).  
If i < K, Print rightmost Kth element (a[N + i -K]). Otherwise,  
Print array after ‘K’ elements (a[i – K]).  
Below is the implementation of the above approach.  
C++
Java
Python3
C#
Javascript
// C++ implementation of right rotation// of an array K number of times#include<bits/stdc++.h>using namespace std; // Function to rightRotate arrayvoid RightRotate(int a[], int n, int k){         // If rotation is greater    // than size of array    k = k % n;     for(int i = 0; i < n; i++)    {       if(i < k)       {                       // Printing rightmost           // kth elements           cout << a[n + i - k] << " ";       }       else       {                       // Prints array after           // 'k' elements           cout << (a[i - k]) << " ";       }    }    cout << "\n";}     // Driver codeint main(){    int Array[] = { 1, 2, 3, 4, 5 };    int N = sizeof(Array) / sizeof(Array[0]);    int K = 2;         RightRotate(Array, N, K);} // This code is contributed by Surendra_Gangwar
// Java Implementation of Right Rotation// of an Array K number of timesimport java.util.*;import java.lang.*;import java.io.*; class Array_Rotation{ // Function to rightRotate arraystatic void RightRotate(int a[],                        int n, int k){         // If rotation is greater    // than size of array    k=k%n;     for(int i = 0; i < n; i++)    {        if(i<k)        {            // Printing rightmost            // kth elements            System.out.print(a[n + i - k]                             + " ");        }        else        {            // Prints array after            // 'k' elements            System.out.print(a[i - k]                             + " ");        }    }    System.out.println();}     // Driver programpublic static void main(String args[]){    int Array[] = {1, 2, 3, 4, 5};    int N = Array.length;     int K = 2;    RightRotate(Array, N, K); }}// This code is contributed by M Vamshi Krishna
# Python3 implementation of right rotation# of an array K number of times # Function to rightRotate arraydef RightRotate(a, n, k):     # If rotation is greater    # than size of array    k = k % n;     for i in range(0, n):         if(i < k):             # Printing rightmost            # kth elements            print(a[n + i - k], end = " ");         else:             # Prints array after            # 'k' elements            print(a[i - k], end = " ");     print("\n"); # Driver codeArray = [ 1, 2, 3, 4, 5 ];N = len(Array);K = 2;     RightRotate(Array, N, K); # This code is contributed by Code_Mech
// C# implementation of right rotation// of an array K number of timesusing System;class GFG{ // Function to rightRotate arraystatic void RightRotate(int []a,                        int n, int k){     // If rotation is greater    // than size of array    k = k % n;     for(int i = 0; i < n; i++)    {       if(i < k)       {                       // Printing rightmost           // kth elements           Console.Write(a[n + i - k] + " ");       }       else       {                       // Prints array after           // 'k' elements           Console.Write(a[i - k] + " ");       }    }    Console.WriteLine();}     // Driver codepublic static void Main(String []args){    int []Array = { 1, 2, 3, 4, 5 };    int N = Array.Length;    int K = 2;         RightRotate(Array, N, K);}} // This code is contributed by Rohit_ranjan
// Javascript implementation of right rotation// of an array K number of times // Function to rightRotate arrayfunction RightRotate(a, n, k){     // If rotation is greater    // than size of array    k = k % n;     for (let i = 0; i < n; i++) {        if (i < k) {             // Printing rightmost            // kth elements            document.write(a[n + i - k] + " ");        }        else {             // Prints array after            // 'k' elements            document.write((a[i - k]) + " ");        }    }    document.write("<br>");} // Driver codelet Array = [1, 2, 3, 4, 5];let N = Array.length;let K = 2; RightRotate(Array, N, K); // This code is contributed by gfgking.
4 5 1 2 3 
Time complexity : O(n) Auxiliary Space : O(1) 
Method 2: Reversing the array 
Approach: The approach is simple yet optimized. The idea is to reverse the array three times. For the first time we reverse only the last k elements. Second time we will reverse first n-k(n=size of array) elements. Finally we will get our rotated array by reversing the entire array.
Code:
C++
C
Java
// C++ program to rotate right an array  by K times#include <iostream>using namespace std;int main(){    int arr[] = { 1, 3, 5, 7, 9, 11 };    int n = sizeof(arr) / sizeof(arr[0]);    int k = 3; //No. of rotations    k = k % n;    int i, j;    // Reverse last k numbers    for (i = n - k, j = n - 1; i < j; i++, j--) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }    // Reverse the first n-k terms    for (i = 0, j = n - k - 1; i < j; i++, j--) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }    // Reverse the entire array    for (i = 0, j = n - 1; i < j; i++, j--) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }     // Print the rotated array    for (int i = 0; i < n; i++) {        cout << arr[i] << " ";    }     return 0;}
// C program to rotate right an array  by K times#include <stdio.h>// using namespace std;int main(){    int arr[] = { 1, 3, 5, 7, 9, 11 };    int n = sizeof(arr) / sizeof(arr[0]);    int k = 3; //No. of rotations    k = k % n;    int i, j;    // Reverse last k numbers    for (i = n - k, j = n - 1; i < j; i++, j--) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }    // Reverse the first n-k terms    for (i = 0, j = n - k - 1; i < j; i++, j--) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }    // Reverse the entire array    for (i = 0, j = n - 1; i < j; i++, j--) {        int temp = arr[i];        arr[i] = arr[j];        arr[j] = temp;    }     // Print the rotated array    for (int i = 0; i < n; i++) {        printf("%d ", arr[i]);    }     return 0;}
// JAVA program to rotate right an array  by K timesimport java.io.*;class GFG {    public static void main(String[] args)    {        int arr[] = new int[] { 1, 3, 5, 7, 9, 11 };        int n = arr.length;        int k = 3; // No. of rotations        k = k % n;        int i, j;        // Reverse last k numbers        for (i = n - k, j = n - 1; i < j; i++, j--) {            int temp = arr[i];            arr[i] = arr[j];            arr[j] = temp;        }        // Reverse the first n-k terms        for (i = 0, j = n - k - 1; i < j; i++, j--) {            int temp = arr[i];            arr[i] = arr[j];            arr[j] = temp;        }        // Reverse the entire array        for (i = 0, j = n - 1; i < j; i++, j--) {            int temp = arr[i];            arr[i] = arr[j];            arr[j] = temp;        }         // Print the rotated array        for (int t = 0; t < n; t++) {            System.out.print(arr[t] + " ");        }    }} // This code is contributed by Taranpreet
7 9 11 1 3 5 
Complexity Analysis:
Time Complexity: O(N).
Auxiliary Space: O(1).
Please see following posts for other methods of array rotation: 
https://www.geeksforgeeks.org/print-array-after-it-is-right-rotated-k-times-set-2/
ipg2016107
Rohit_ranjan
Code_Mech
gfgking
hguru001
shreyasnaphad
singhh3010
rotation
Arrays
Arrays
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.