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



My Personal Notes arrow_drop_up



Article Tags :
Practice Tags :


17


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