Write a function rotate(ar[], d, n) that rotates arr[] of size n by d elements.

Rotation of the above array by 2 will make array

**METHOD 1 (Using temp array)**

Input arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2, n =7 1) Store d elements in a temp array temp[] = [1, 2] 2) Shift rest of the arr[] arr[] = [3, 4, 5, 6, 7, 6, 7] 3) Store back the d elements arr[] = [3, 4, 5, 6, 7, 1, 2]

**Time complexity :** O(n)

**Auxiliary Space : **O(d)

**METHOD 2 (Rotate one by one)**

leftRotate(arr[], d, n) start For i = 0 to i < d Left rotate all elements of arr[] by one end

To rotate by one, store arr[0] in a temporary variable temp, move arr[1] to arr[0], arr[2] to arr[1] …and finally temp to arr[n-1]

Let us take the same example arr[] = [1, 2, 3, 4, 5, 6, 7], d = 2

Rotate arr[] by one 2 times

We get [2, 3, 4, 5, 6, 7, 1] after first rotation and [ 3, 4, 5, 6, 7, 1, 2] after second rotation.

Below is the implementation of the above approach :

## C++

`// C++ program to rotate an array by ` `// d elements ` `#include <bits/stdc++.h> ` `using` `namespace` `std; ` ` ` `/*Function to left Rotate arr[] of ` ` ` `size n by 1*/` `void` `leftRotatebyOne(` `int` `arr[], ` `int` `n) ` `{ ` ` ` `int` `temp = arr[0], i; ` ` ` `for` `(i = 0; i < n - 1; i++) ` ` ` `arr[i] = arr[i + 1]; ` ` ` ` ` `arr[i] = temp; ` `} ` ` ` `/*Function to left rotate arr[] of size n by d*/` `void` `leftRotate(` `int` `arr[], ` `int` `d, ` `int` `n) ` `{ ` ` ` `for` `(` `int` `i = 0; i < d; i++) ` ` ` `leftRotatebyOne(arr, n); ` `} ` ` ` `/* utility function to print an array */` `void` `printArray(` `int` `arr[], ` `int` `n) ` `{ ` ` ` `for` `(` `int` `i = 0; i < n; i++) ` ` ` `cout << arr[i] << ` `" "` `; ` `} ` ` ` `/* Driver program to test above functions */` `int` `main() ` `{ ` ` ` `int` `arr[] = { 1, 2, 3, 4, 5, 6, 7 }; ` ` ` `int` `n = ` `sizeof` `(arr) / ` `sizeof` `(arr[0]); ` ` ` ` ` `// Function calling ` ` ` `leftRotate(arr, 2, n); ` ` ` `printArray(arr, n); ` ` ` ` ` `return` `0; ` `} ` |

# C

// C program to rotate an array by // d elements #include /* Function to left Rotate arr[] of size n by 1*/ void leftRotatebyOne(int arr[], int n); /*Function to left rotate arr[] of size n by d*/ void leftRotate(int arr[], int d, int n) { int i; for (i = 0; i < d; i++) leftRotatebyOne(arr, n); } void leftRotatebyOne(int arr[], int n) { int temp = arr[0], i; for (i = 0; i < n - 1; i++) arr[i] = arr[i + 1]; arr[i] = temp; } /* utility function to print an array */ void printArray(int arr[], int n) { int i; for (i = 0; i < n; i++) printf("%d ", arr[i]); } /* Driver program to test above functions */ int main() { int arr[] = { 1, 2, 3, 4, 5, 6, 7 }; leftRotate(arr, 2, 7); printArray(arr, 7); return 0; }

**Output :**

**Time complexity :** O(n * d)

**Auxiliary Space :** O(1)