Program to cyclically rotate an array by one

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

#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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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));
    }
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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
?>

chevron_right



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

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.




My Personal Notes arrow_drop_up

Article Tags :
Practice Tags :


35


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.