Php Program for Reversal algorithm for right rotation of an array
Given an array, right rotate it by k elements.
After K=3 rotation
Examples:
Input: arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} k = 3 Output: 8 9 10 1 2 3 4 5 6 7 Input: arr[] = {121, 232, 33, 43 ,5} k = 2 Output: 43 5 121 232 33
Note : In the below solution, k is assumed to be smaller than or equal to n. We can easily modify the solutions to handle larger k values by doing k = k % n
Algorithm:
rotate(arr[], d, n) reverseArray(arr[], 0, n-1) ; reverse(arr[], 0, d-1); reverse(arr[], d, n-1);
Below is the implementation of above approach:
PHP
<?php // PHP program for right rotation of // an array (Reversal Algorithm) /*Function to reverse arr[] from index start to end*/ function reverseArray(& $arr , $start , $end ) { while ( $start < $end ) { $temp = $arr [ $start ]; $arr [ $start ] = $arr [ $end ]; $arr [ $end ] = $temp ; $start ++; $end --; } } /* Function to right rotate arr[] of size n by d */ function rightRotate(& $arr , $d , $n ) { reverseArray( $arr , 0, $n - 1); reverseArray( $arr , 0, $d - 1); reverseArray( $arr , $d , $n - 1); } /* function to print an array */ function printArray(& $arr , $size ) { for ( $i = 0; $i < $size ; $i ++) echo $arr [ $i ] . " " ; } // Driver code $arr = array (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); $n = sizeof( $arr ); $k = 3; rightRotate( $arr , $k , $n ); printArray( $arr , $n ); // This code is contributed by ita_c ?> |
Output:
8 9 10 1 2 3 4 5 6 7
Time Complexity: O(N)
Auxiliary Space: O(1)
Please refer complete article on Reversal algorithm for right rotation of an array for more details!
Please Login to comment...