If the swap operation of the primitive array elements starts from the index 0 then it is going to be enough to iterate till the half of the array.
Following is the in-place where there is no need to create-allocate a new array for reversing primitive array items implementation in Java.
package basics;
public class IterativeArrayReverse {
private static void reverseArray( int[] inArr )
{
if ( inArr==null || inArr.length==0 )
return ;
int len = inArr.length;
for( int i=0; i<len/2; i++ )
swap(inArr, i, len-i-1);
}
private static void swap( int[] inArr, int i, int j )
{
int temp = inArr[i];
inArr[i] = inArr[j];
inArr[j] = temp;
}
public static void main(String[] args) {
int[] arr = { 1,2,3,4,5,6 };
System.out.println("Before Reverse");
for( int i=0; i<arr.length; i++ )
System.out.printf("%s ", arr[i]);
reverseArray( arr );
System.out.println("\nAfter Reverse");
for( int i=0; i<arr.length; i++ )
System.out.printf("%s ", arr[i]);
int[] arr2 = {4,3,6,2,7,8,9,5};
System.out.println("\n\nBefore Reverse");
for( int i=0; i<arr2.length; i++ )
System.out.printf("%s ", arr2[i]);
reverseArray( arr2 );
System.out.println("\nAfter Reverse");
for( int i=0; i<arr2.length; i++ )
System.out.printf("%s ", arr2[i]);
}
}
Create a IterativeArrayReverse.java file in your workspace.
When the main method inside the IterativeArrayReverse class executed it is going to print :
Before Reverse
1 2 3 4 5 6
After Reverse
6 5 4 3 2 1
Before Reverse
4 3 6 2 7 8 9 5
After Reverse
5 9 8 7 2 6 3 4


