# Reversal algorithm for Array rotation

## Introduction

Array rotation is a fundamental operation in computer science, frequently utilized in different algorithms and applications. It includes moving the components of an array consistently to the left or right by a specific number of positions. While there are numerous ways to deal with accomplish array rotation, one especially productive and elegant strategy is the reversal algorithm. In this article, we delve into the complexities of the reversal algorithm, its execution, and its benefits in array rotation.

### Understanding Array Rotation

Prior to diving into the reversal algorithm, understanding the idea of array rotation is fundamental. Consider a variety of elements [1, 2, 3, 4, 5]. [3, 4, 5, 1, 2] would be obtained by rotating this array by two positions to the left, while [4, 5, 1, 2, 3] would be obtained by rotating it by two positions to the right.

Naive approaches to deal with array rotation include repeatedly moving components individually, which can be computationally costly, particularly for large arrays. The reversal algorithm offers a more proficient answer for this problem.

### The Reversal Algorithm

The reversal algorithm for array rotation works on the rule of reversing portions of the array to accomplish the desired rotation. The algorithm comprises three main steps:

Reverse the initial segment of the array

We reverse the elements from index 0 to d-1, which in this case means reversing [1, 2] to obtain [2, 1], resulting in [2, 1, 3, 4, 5] in order to rotate the array two positions to the left (where d=2).

Reverse the second part of the array

Reverse the components from index d to the end of the array.

We switch the components from index 2 as far as possible in the example above, resulting in [2, 1, 5, 4, 3].

Completely reverse the array

Finally, reverse the array as a whole.

The whole array [2, 1, 5, 4, 3] is turned around to [3, 4, 5, 1, 2].

Code

Output:

Code Explanation

Include Header Files: The code incorporates the <stdio.h> header document, which contains standard input and output functions utilized for printing messages to the console.

Array Reverse Function: The reverseArray function is characterized by reversing components of the array from a predetermined start index to an end index. It swaps components evenly around the center of the array.

Function to Rotate Array: The rotateArray function takes three arguments: the array arr, its size n, and the number of positions to turn d. It involves the reverseArray function to rotate the pivot in three stages: reverse the first section of the array, then the second section, and finally, the entire array.

Main Function: It in states an array arr for certain values, ascertains the size of the array n, and indicates the number of positions to turn d.

Array Rotation: When the array arr, its size n, and the number of positions to turn d are passed to the rotateArray function, the array is pivoted by d situations to the left side.

Print Rotated Array: Resulting of rotating the array, the parts of the rotated array are printed to the console using a for loop.

Return Statement: The main function returns 0, showing the successful execution of the program.

## Conclusion

The reversal algorithm offers an exquisite and effective answer to the issue of array rotation. By utilizing the idea of reversing bits of the array, it accomplishes the desired rotation with a time complexity of O(n). This makes it appropriate for different applications where array rotation is required, going from data manipulation tasks to algorithmic challenges. Understanding and executing the reversal algorithm is significant expertise for any software engineer looking to streamline array manipulation operations.