' P '

whatever I will forget

Java Arrayの中身を逆にする

これまたランクAくらいの問題で出そうなのでメモ
ミソはhalfLengthを作るところ。これを作らないとarrayの半分以降のswapができない...

下記はそれぞれarray内で交換される値
array[0] : array[4]
array[1] : array[3]
array[2] : array[2]
array[3] : array[1] -> すでにswapされた値が入る。
array[4] : array[0] -> すでにswapされた値が入る。

なのでarrayエレメントの半分までループを回して前半部分はtmpに保存しておく必要があるってことです

public class Main {

    public static void main(String[] args) {
        int[] orgArray = new int[]{1,2,3,4,5};
        System.out.println("original array : " + Arrays.toString(orgArray));
        reverse(orgArray);
        System.out.println("reversed array : " + Arrays.toString(orgArray));
    }

    public static void reverse(int[] array) {
        int maxLength = array.length - 1;
        int halfLength = array.length / 2;
        for(int i = 0; i < halfLength; i++) {
            int tmp = array[i];
            array[i] = array[maxLength-i];
            array[maxLength-i] = tmp;
        }
    }
}