Java 2012 02 29

Материал из SEWiki
Перейти к: навигация, поиск

Задание №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>

Создайте следующие компараторы:

  1. IntegerModComparator, позволяющий сравнивать ComparableInteger друг с другом по остатку от деления на n (задается при конструировании),
  2. 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 необходимого размера и заполнял его случайными элементами)

Ваша программа должна

  1. сравнивать между собой время работы ShakerSort, HeapSort при сортировке 10, 100, 1000, 10000 элементов (без компараторов).
  2. демонстрировать результаты работы сортировок с использованием различных компараторов.