public class Test {
    
    public static void main(String[] args) {
        doSort("a[less], less++;", new Sortable() { public void sort(int[] a) { sort2(a, a.length); }});
        doSort("a[less++];      ", new Sortable() { public void sort(int[] a) { sort1(a, a.length); }});
    }

    private static void doSort(String name, Sortable sortable) {
        long minTime = Long.MAX_VALUE;
        long startTime;
        long endTime;

        for (int i = 0; i < COUNT; i++) {
            startTime = System.nanoTime();
            sortable.sort(GOLDEN);
            endTime = System.nanoTime();
            minTime = Math.min(minTime, endTime - startTime);
        }
        System.out.println(name + "   Time: " + (minTime * COUNT / 1000000L));
    }

    private static void sort1(int[] a, int right) {
        for (int k = 0, less = k; k < right; k++) {
            a[k] = a[less];
            a[less++] = 0;
        }
    }

    private static void sort2(int[] a, int right) {
        for (int k = 0, less = k; k < right; k++) {
            a[k] = a[less];
            a[less] = 0;
            less++;
        }
    }

    interface Sortable {
        void sort(int[] a);
    }

    private static final int COUNT = 1500;
    private static final int[] GOLDEN = new int[1500000];
}
