Given an array, cyclically rotate the array clockwise by one.
Examples:
Input: arr[] = {1, 2, 3, 4, 5} Output: arr[] = {5, 1, 2, 3, 4}
Following are steps.
1) Store last element in a variable say x.
2) Shift all elements one position ahead.
3) Replace first element of array with x.
C++
// C++ code for program // to cyclically rotate // an array by one # include <iostream> using namespace std; void rotate( int arr[], int n) { int x = arr[n - 1], i; for (i = n - 1; i > 0; i--) arr[i] = arr[i - 1]; arr[0] = x; } // Driver code int main() { int arr[] = {1, 2, 3, 4, 5}, i; int n = sizeof (arr) / sizeof (arr[0]); cout << "Given array is \n" ; for (i = 0; i < n; i++) cout << arr[i]; rotate(arr, n); cout << "\nRotated array is\n" ; for (i = 0; i < n; i++) cout << arr[i]; return 0; } // This code is contributed by jit_t |
C
#include <stdio.h> void rotate( int arr[], int n) { int x = arr[n-1], i; for (i = n-1; i > 0; i--) arr[i] = arr[i-1]; arr[0] = x; } int main() { int arr[] = {1, 2, 3, 4, 5}, i; int n = sizeof (arr)/ sizeof (arr[0]); printf ( "Given array is\n" ); for (i = 0; i < n; i++) printf ( "%d " , arr[i]); rotate(arr, n); printf ( "\nRotated array is\n" ); for (i = 0; i < n; i++) printf ( "%d " , arr[i]); return 0; } |
Java
import java.util.Arrays; public class Test { static int arr[] = new int []{ 1 , 2 , 3 , 4 , 5 }; // Method for rotation static void rotate() { int x = arr[arr.length- 1 ], i; for (i = arr.length- 1 ; i > 0 ; i--) arr[i] = arr[i- 1 ]; arr[ 0 ] = x; } /* Driver program */ public static void main(String[] args) { System.out.println( "Given Array is" ); System.out.println(Arrays.toString(arr)); rotate(); System.out.println( "Rotated Array is" ); System.out.println(Arrays.toString(arr)); } } |
Python3
# Python3 code for program to # cyclically rotate an array by one # Method for rotation def rotate(arr, n): x = arr[n - 1 ] for i in range (n - 1 , 0 , - 1 ): arr[i] = arr[i - 1 ]; arr[ 0 ] = x; # Driver function arr = [ 1 , 2 , 3 , 4 , 5 ] n = len (arr) print ( "Given array is" ) for i in range ( 0 , n): print (arr[i], end = ' ' ) rotate(arr, n) print ( "\nRotated array is" ) for i in range ( 0 , n): print (arr[i], end = ' ' ) # This article is contributed # by saloni1297 |
C#
// C# code for program to cyclically // rotate an array by one using System; public class Test { static int []arr = new int []{1, 2, 3, 4, 5}; // Method for rotation static void rotate() { int x = arr[arr.Length - 1], i; for (i = arr.Length - 1; i > 0; i--) arr[i] = arr[i-1]; arr[0] = x; } // Driver Code public static void Main() { Console.WriteLine( "Given Array is" ); string Original_array = string .Join( " " , arr); Console.WriteLine(Original_array); rotate(); Console.WriteLine( "Rotated Array is" ); string Rotated_array = string .Join( " " , arr); Console.WriteLine(Rotated_array); } } // This code is contributed by vt_m. |
PHP
<?php // PHP code for program // to cyclically rotate // an array by one function rotate(& $arr , $n ) { $x = $arr [ $n - 1]; for ( $i = $n - 1; $i > 0; $i --) $arr [ $i ] = $arr [ $i - 1]; $arr [0] = $x ; } // Driver code $arr = array (1, 2, 3, 4, 5); $n = sizeof( $arr ); echo "Given array is \n" ; for ( $i = 0; $i < $n ; $i ++) echo $arr [ $i ] . " " ; rotate( $arr , $n ); echo "\nRotated array is\n" ; for ( $i = 0; $i < $n ; $i ++) echo $arr [ $i ] . " " ; // This code is contributed // by ChitraNayal ?> |
Output:
Given array is 1 2 3 4 5 Rotated array is 5 1 2 3 4
Time Complexity: O(n) As we need to iterate through all the elements
Auxiliary Space: O(1)
The above question can also be solved by using reversal algorithm
Please write comments if you find any bug in above code/algorithm, or find other ways to solve the same problem
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.