Skip to content

alexander-prutko/easy-algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5e512e9 · Nov 23, 2014

History

37 Commits
Nov 23, 2014
Nov 23, 2014
Nov 23, 2014
Nov 18, 2014
Nov 23, 2014
Nov 23, 2014
Nov 23, 2014
Nov 20, 2014
Nov 20, 2014
Nov 23, 2014
Nov 20, 2014
Nov 21, 2014
Nov 18, 2014
Nov 21, 2014
Nov 23, 2014
Nov 21, 2014
Nov 20, 2014

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