Write a program to reverse first n elements of an
array.
If array has
elements {1, 2, 3, 4, 5, 6}, then reverse first 3 elements of array changes like
{3, 2, 1, 4, 5, 6}.
It is very
sample, suppose we need to reverse n elmenets,
Swap arr[0]
with arr[n-1], arr[1] with arr[n-2] like this.
Step 1: int start=0, end=n-1;
Step 2: while(start < end){
swap(arr[start], arr[end]);
start++; end--;
}
Once start
reaches end, we can stop this procedure.
import java.util.Objects; public class ReverseArray { public static void reverseArray(int arr[], int noOfElements) { Objects.nonNull(arr); if (arr.length == 1 || noOfElements > arr.length || noOfElements < 2) return; int start = 0, end = noOfElements - 1; int temp; while (start < end) { temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; } } }
Following
are the junit test cases.
import static org.junit.Assert.assertTrue; import java.util.Arrays; import org.junit.Test; public class ReverseArrayTest { @Test public void test1() { int arr1[] = { 1, 2, 3, 4, 5, 6 }; int expected1[] = { 6, 5, 4, 3, 2, 1 }; int arr2[] = { 1, 2, 3, 4, 5, 6, 7 }; int expected2[] = { 7, 6, 5, 4, 3, 2, 1 }; int arr3[] = { 1 }; int expected3[] = { 1 }; int arr4[] = { 1, 2, 3, 4, 5, 6 }; int expected4[] = { 3, 2, 1, 4, 5, 6 }; int arr5[] = { 1, 2, 3, 4, 5, 6, 7 }; int expected5[] = { 2, 1, 3, 4, 5, 6, 7 }; int arr6[] = { 1 }; int expected6[] = { 1 }; ReverseArray.reverseArray(arr1, arr1.length); ReverseArray.reverseArray(arr2, arr2.length); ReverseArray.reverseArray(arr3, arr3.length); ReverseArray.reverseArray(arr4, 3); ReverseArray.reverseArray(arr5, 2); ReverseArray.reverseArray(arr6, 1); assertTrue(Arrays.equals(arr1, expected1)); assertTrue(Arrays.equals(arr2, expected2)); assertTrue(Arrays.equals(arr3, expected3)); assertTrue(Arrays.equals(arr4, expected4)); assertTrue(Arrays.equals(arr5, expected5)); assertTrue(Arrays.equals(arr6, expected6)); } @Test(expected = NullPointerException.class) public void test2() { ReverseArray.reverseArray(null, 1); } public void test3() { int arr1[] = { 1, 2, 3, 4, 5, 6 }; int expected1[] = { 6, 5, 4, 3, 2, 1 }; ReverseArray.reverseArray(arr1, 7); assertTrue(Arrays.equals(arr1, expected1)); } }
No comments:
Post a Comment