Java 2012 02 29
Задание №4 (Вариант-1)
Создайте собственные параметризованные интерфейсы Comparable<T> и Comparator<T> (использовать имеющиеся нельзя). Comparable имеет метод int compareTo(T x), а Comparator метод int compare(T x, T y)
Создайте наследников Comparable: СomparableInteger implements Comparable<СomparableInteger> и СomparableString implements Comparable<СomparableString>
Создайте следующие компараторы:
- IntegerModComparator, позволяющий сравнивать ComparableInteger друг с другом по остатку от деления на n (задается при конструировании),
- StringLengthComparator, позволяющий сравнивать ComparableString друг с другом по количеству букв,
Создайте интерфейс Sorter с методами sort(List<T> list) и sort(List<T> list, Comparator<T> c)
Создайте его наследников, реализующих сортировки ShakerSort, HeapSort
Создайте класс, позволяющий находить время работы сортировки. Метод getTime должен получать в качестве параметров List для сортировки и Sorter, либо List для сортировки, Sorter и Comparator
(Необязательно: Попробуйте сделать так, чтобы getTime получал не List, а число n - сколько необходимо сортировать элементов, после чего сам бы создавал List необходимого размера и заполнял его случайными элементами)
Ваша программа должна
- сравнивать между собой время работы ShakerSort, HeapSort при сортировке 10, 100, 1000, 10000 элементов (без компараторов).
- демонстрировать результаты работы сортировок с использованием различных компараторов.