среда, 1 августа 2012 г.

algorithm: array inversion


    Одна из популярных задачек на собеседовании - написать метод, инвертирующий элементы массива:
public class ArrayInverter {
    public static void invert(int[] arr) {
        for (int k = 0; k < arr.length / 2; k++) {
            int tmp = arr[k];
            arr[k] = arr[arr.length - k - 1];
            arr[arr.length - k - 1] = tmp;
        }
    }
}

    Пример работы:
import java.util.Arrays;

import static ArrayInverter.invert;

public class ArrayInverterTest {

    public static void main(String[] args) {
        int[] arr;

        arr = new int[]{};
        System.out.print(Arrays.toString(arr) + " -> ");
        invert(arr);
        System.out.println(Arrays.toString(arr));

        arr = new int[]{0};
        System.out.print(Arrays.toString(arr) + " -> ");
        invert(arr);
        System.out.println(Arrays.toString(arr));

        arr = new int[]{0, 1};
        System.out.print(Arrays.toString(arr) + " -> ");
        invert(arr);
        System.out.println(Arrays.toString(arr));

        arr = new int[]{0, 1, 2};
        System.out.print(Arrays.toString(arr) + " -> ");
        invert(arr);
        System.out.println(Arrays.toString(arr));

        arr = new int[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
        System.out.print(Arrays.toString(arr) + " -> ");
        invert(arr);
        System.out.println(Arrays.toString(arr));
    }
}
>> [] -> []
>> [0] -> [0]
>> [0, 1] -> [1, 0]
>> [0, 1, 2] -> [2, 1, 0]
>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] -> [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

    Лабораторные
    Задания лабораторных можно прочитать на этой странице.
    К этой странице относится лабораторная proc.loop.array_inverter_optimized.