Here we use one user input array and the size of the group. And we create sub array on the size of the group and we just reverse it. If the size of the groups(p) is not multiple of the size of the array(n) then the last group will less than k elements left and reverse all remaining elements. If p=1 then array is unchanged, if p>=1 then we reverse all elements in the array.
Algorithm
Revarray(A,n,p) /* A is an integer Array, n is the size of an array and every sub-array of size p starting from the beginning of the array and reverse it.*/ Step 1: i is the loop control variable which is initialized by 0. Step 2: using while loop check i is less than n or not. If true Step 2.1: L=i /* Left sub array Step 2.2: R=min (i+p-1, n-1) /*Right sub array Step 2.3: Using while loop check L is than R or not. If yes Step 2.3.1: swap left sub array A (L) and Right Sub Array A(R). Step 2.3.2: L is incremented by 1. Step 2.3.3: R is stepping backward one step at a time. Step 2.4: End While Step 2.5: i=i+p Step 3: End While Step 4: Stop
Example Code
#reverse of an array in groups of given size def arrayreverse(A, n, p): i = 0 while(i<n): L = i R = min(i + p - 1, n - 1) while (L < R): A[L], A[R] = A[R], A[L] L+= 1; R-+1 i+= p # Driver code #Insert data in an array A=list() n=int(input("Enter the size of the array ::")) print("Enter the number ::") for i in range(int(n)): k=int(input("")) A.append(int(k)) p=int(input("Enter the size of the group ::")) arrayreverse(A, n, p) for i in range(0, n): print(A[i], end =" ")
Output
Enter the size of the array ::6 Enter the number :: 11 22 33 44 55 66 Enter the size of the group ::2 22 11 44 33 66 55