これまたランク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; } } }