Rotation of Elements of Array - Left and Right in Java
Understanding Array Rotation
Array rotation involves shifting elements either to the left or right by a specified number of positions.
We will explore three different methods to perform left and right rotation in Java.
Method 1: Using Temporary Array
public class ArrayRotation { static void leftRotate(int arr[], int d) { int n = arr.length; int temp[] = new int[d]; for (int i = 0; i < d; i++) temp[i] = arr[i]; for (int i = 0; i < n - d; i++) arr[i] = arr[i + d]; for (int i = 0; i < d; i++) arr[n - d + i] = temp[i]; } static void rightRotate(int arr[], int d) { int n = arr.length; int temp[] = new int[d]; for (int i = 0; i < d; i++) temp[i] = arr[n - d + i]; for (int i = n - 1; i >= d; i--) arr[i] = arr[i - d]; for (int i = 0; i < d; i++) arr[i] = temp[i]; } static void printArray(int arr[]) { for (int num : arr) System.out.print(num + " "); System.out.println(); } public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5}; leftRotate(arr, 2); System.out.println("Array after left rotation:"); printArray(arr); rightRotate(arr, 2); System.out.println("Array after right rotation:"); printArray(arr); } }
Method 2: Using Reversal Algorithm
public class ArrayRotationReversal { static void reverse(int arr[], int start, int end) { while (start < end) { int temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } static void leftRotate(int arr[], int d) { int n = arr.length; reverse(arr, 0, d - 1); reverse(arr, d, n - 1); reverse(arr, 0, n - 1); } static void rightRotate(int arr[], int d) { int n = arr.length; reverse(arr, 0, n - 1); reverse(arr, 0, d - 1); reverse(arr, d, n - 1); } static void printArray(int arr[]) { for (int num : arr) System.out.print(num + " "); System.out.println(); } public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5}; leftRotate(arr, 2); System.out.println("Array after left rotation:"); printArray(arr); rightRotate(arr, 2); System.out.println("Array after right rotation:"); printArray(arr); } }
Method 3: Rotating One by One
public class ArrayRotationOneByOne { static void leftRotateOne(int arr[]) { int n = arr.length; int temp = arr[0]; for (int i = 0; i < n - 1; i++) arr[i] = arr[i + 1]; arr[n - 1] = temp; } static void rightRotateOne(int arr[]) { int n = arr.length; int temp = arr[n - 1]; for (int i = n - 1; i > 0; i--) arr[i] = arr[i - 1]; arr[0] = temp; } static void leftRotate(int arr[], int d) { for (int i = 0; i < d; i++) leftRotateOne(arr); } static void rightRotate(int arr[], int d) { for (int i = 0; i < d; i++) rightRotateOne(arr); } static void printArray(int arr[]) { for (int num : arr) System.out.print(num + " "); System.out.println(); } public static void main(String[] args) { int arr[] = {1, 2, 3, 4, 5}; leftRotate(arr, 2); System.out.println("Array after left rotation:"); printArray(arr); rightRotate(arr, 2); System.out.println("Array after right rotation:"); printArray(arr); } }