/* This program contains two methods to reverse the order of integers in an integer array. The first version does the reverse "in place" by altering the integer array that is passed. The seccond version passed back a new, reversed array. */ import java.util.*; public class Reverse { public static void main(String[] args) { // index 0 1 2 3 4 5 int[] numbers = {11, 42, -5, 27, 0, 89}; // 89, 0, 27, -5, 42, 11 System.out.println("First version of reverse: "); System.out.println("numbers array before reverse: " + Arrays.toString(numbers)); reverse1(numbers); System.out.println("numbers array after reverse: " + Arrays.toString(numbers)); System.out.println(); int[] numbers2 = {11, 42, -5, 27, 0, 89}; System.out.println("Second version of reverse: "); System.out.println("numbers2 array before reverse: " + Arrays.toString(numbers2)); int[] nums = reverse2(numbers2); System.out.println("numbers2 array after reverse: " + Arrays.toString(numbers2)); System.out.println("nums array after reverse: " + Arrays.toString(nums)); } // This method reverses an array of numbers "in place". The array passed // in will be the reversed array. public static void reverse1(int[] numbers) { int temp = 0; for (int i = 0; i < numbers.length / 2; i++) { temp = numbers[i]; numbers[i] = numbers[numbers.length - 1 - i]; numbers[numbers.length - 1 - i] = temp; } } // This reverse method returns a new integer array that is reversed. The // array that is passed in as a parameter is not altered. public static int[] reverse2(int[] numbers) { int[] numbers2 = Arrays.copyOf(numbers, numbers.length); int temp = 0; for (int i = 0; i < numbers2.length / 2; i++) { temp = numbers2[i]; numbers2[i] = numbers2[numbers2.length - 1 - i]; numbers2[numbers2.length - 1 - i] = temp; } return numbers2; } }