Skip to content

alexander-prutko/easy-algorithm

Repository files navigation

easy-algorithm

EasyAlgorithm

С помощью проекта EasyAlgorithm можно протестировать на производительность различные алгоритмы на разных структурах данных. На данный момент ведется работа над алгоритмами сортировки.

Сортировка

Производительность сортировки зависит от многих факторов:

  • тип структуры данных;
  • размер структуры данных;
  • размер элементов;
  • размер сравниваемых ключей.

При выборе структуры данных следует учитывать специфику ее использования (например, насколько часто в структуру будут добавляться новые элементы, как часто будет производится сортировка и поиск) и характеристики элементов, из которых она состоит (размер элементов и размер сравниваемых ключей).

Модуль сортировки разработан так, что сортировку можно провести над любой структурой данных, обладающей определенным интерфейсом. Если у существующей структуры данных нет такого интерфейса, то несложно сделать Адаптер (Adapter), добавляющий необходимые методы.

На данный момент реализованы следующие структуры данных:

  • массив (Array) и адаптер для вектора (Vector Adapter);
  • односвязный список (List);
  • двусвязный список (DLList).

(для этих структур реализованы простые итераторы на основе одноименного паттерна проектирования Iterator)

А так же реализованы методы сортировки:

  • сортировка выбором (Selection sort);
  • сортировка вставкой (Insertion sort);
  • сортировка пузырьком (Bubble sort);
  • сортировка Шелла (Shell sort);
  • быстрая сортировка (Quick sort).

При каждом выполнении сортировки статистика по длительности операций записывается в специальный класс TimeObserver. Такое взаимодействие реализовано с помощью паттерна проектирования Наблюдатель (Observer).

About

EasyAlgorithm

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published