reverseChunks

Category: Arrays
Author: Marty Stepp and Helene Martin
Book Chapter: 7.4
Problem: reverseChunks
Write a static method named reverseChunks that accepts two parameters, an array of integers a and an integer
"chunk" size s, and reverses every s elements of a. For example, if s is 2 and array a stores {1, 2, 3, 4, 5, 6},
a is rearranged to store {2, 1, 4, 3, 6, 5}. With an s of 3 and the same elements {1, 2, 3, 4, 5, 6}, array
a is rearranged to store {3, 2, 1, 6, 5, 4}. The chunks on this page are underlined for convenience.
If a's length is not evenly divisible by s, the remaining elements are untouched. For example, if s is 4 and array a
stores {5, 4, 9, 2, 1, 7, 8, 6, 2, 10}, a is rearranged to store {2, 9, 4, 5, 6, 8, 7, 1, 2, 10}.
It is also possible that s is larger than a's entire length, in which case the array is not modified at all. You may assume
that s is 1 or greater (an s of 1 would not modify the array). If array a is empty, its contents should remain unchanged.
The following table shows some calls to your method and their expected results:
Array and Call
int[] a1 = {20, 10, 30,
reverseChunks(a1, 2);
int[] a2 = {2, 4, 6, 8,
reverseChunks(a2, 3);
int[] a3 = {7, 1, 3, 5,
reverseChunks(a3, 5);
int[] a4 = {1, 2, 3, 4,
reverseChunks(a4, 8);
int[] a5 = {};
reverseChunks(a5, 2);
Array Contents After Call
60, 50, 40}; {10, 20, 60, 30, 40, 50}
10, 12, 14, 16}; {6, 4, 2, 12, 10, 8, 14, 16}
9, 8, 2, 6, 4, 10, 0, 12}; {9, 5, 3, 1, 7, 10, 4, 6, 2, 8, 0, 12}
5, 6}; {1, 2, 3, 4, 5, 6}
{}