AnimationTester.java Source code

Java tutorial

Introduction

Here is the source code for AnimationTester.java

Source

import java.util.Comparator;

public class AnimationTester {
    public static void main(String[] args) {

        Integer[] values = new Integer[] { 1, 2, 7, 3, 5 };
        Comparator<Integer> comp = new Comparator<Integer>() {
            public int compare(Integer d1, Integer d2) {
                return d1.compareTo(d2);
            }
        };
        MergeSorter.sort(values, comp);
        for (int i = 0; i < values.length; i++) {
            System.out.print(values[i] + " ");
        }

    }
}

class MergeSorter {

    public static <E> void sort(E[] a, Comparator<? super E> comp) {
        mergeSort(a, 0, a.length - 1, comp);
    }

    private static <E> void mergeSort(E[] a, int from, int to, Comparator<? super E> comp) {
        if (from == to)
            return;
        int mid = (from + to) / 2;
        // Sort the first and the second half
        mergeSort(a, from, mid, comp);
        mergeSort(a, mid + 1, to, comp);
        merge(a, from, mid, to, comp);
    }

    private static <E> void merge(E[] a, int from, int mid, int to, Comparator<? super E> comp) {
        int n = to - from + 1;
        Object[] values = new Object[n];

        int fromValue = from;

        int middleValue = mid + 1;

        int index = 0;

        while (fromValue <= mid && middleValue <= to) {
            if (comp.compare(a[fromValue], a[middleValue]) < 0) {
                values[index] = a[fromValue];
                fromValue++;
            } else {
                values[index] = a[middleValue];
                middleValue++;
            }
            index++;
        }

        while (fromValue <= mid) {
            values[index] = a[fromValue];
            fromValue++;
            index++;
        }
        while (middleValue <= to) {
            values[index] = a[middleValue];
            middleValue++;
            index++;
        }

        for (index = 0; index < n; index++)
            a[from + index] = (E) values[index];
    }
}