С помощью проекта EasyAlgorithm можно протестировать на производительность различные алгоритмы на разных структурах данных. На данный момент ведется работа над алгоритмами сортировки.
Производительность сортировки зависит от многих факторов:
- тип структуры данных;
- размер структуры данных;
- размер элементов;
- размер сравниваемых ключей.
При выборе структуры данных следует учитывать специфику ее использования (например, насколько часто в структуру будут добавляться новые элементы, как часто будет производится сортировка и поиск) и характеристики элементов, из которых она состоит (размер элементов и размер сравниваемых ключей).
Модуль сортировки разработан так, что сортировку можно провести над любой структурой данных, обладающей определенным интерфейсом. Если у существующей структуры данных нет такого интерфейса, то несложно сделать Адаптер (Adapter), добавляющий необходимые методы.
На данный момент реализованы следующие структуры данных:
- массив (Array) и адаптер для вектора (Vector Adapter);
- односвязный список (List);
- двусвязный список (DLList).
(для этих структур реализованы простые итераторы на основе одноименного паттерна проектирования Iterator)
А так же реализованы методы сортировки:
- сортировка выбором (Selection sort);
- сортировка вставкой (Insertion sort);
- сортировка пузырьком (Bubble sort);
- сортировка Шелла (Shell sort);
- быстрая сортировка (Quick sort).
При каждом выполнении сортировки статистика по длительности операций записывается в специальный класс TimeObserver. Такое взаимодействие реализовано с помощью паттерна проектирования Наблюдатель (Observer).