Пятница, 10.01.2025, 13:44
Приветствую Вас Гость | RSS

СДМП

 

Классы

Алгоритмы

Exchanging – Обменом

Bubble, Quick

Insertion - Вставками

Insert, Shell

Merge – Слиянием

Merge

Selection – Выбором

Select, Heap

Non-comparision - Распределением

Bucket, Counting, Binary Tree, Distribution

 

 

Пояснения по области применения.

 

Bubble

Эффективен он лишь для небольших массивов.

 

Quick

Сильно деградирует по скорости (до Θ(n2)) при неудачных выборах опорных элементов, что может случиться при неудачных входных данных. Этого можно избежать, используя такие модификации алгоритма, как Introsort или вероятностно, выбирая опорный элемент случайно, а не фиксированным образом.

 

Insertion

Эффективен на небольших наборах данных, на наборах данных до десятков элементов может оказаться лучшим. Эффективен на наборах данных, которые уже частично отсортированы.

 

Shell

Отсутствие деградации при неудачных наборах данных — qsort легко деградирует до O(n²), что хуже, чем худшее гарантированное время для сортировки Шелла. Часто оказывается, что сортировка Шелла есть самый лучший способ сортировки до, примерно, 1000 элементов. Среднее время работы алгоритма зависит от длин промежутков, на которых будут находиться сортируемые элементы исходного массива на каждом шаге алгоритма. Существует несколько подходов к выбору этих значений.

 

Merge

Часто используется для сортировки линейного списка.

Находит применение при потоковом чтении элементов, однако уступает в скорости сортировке бинарным деревом.

 

Selection

Малоэффективен для больших массивов. Оптимальная скорость достигается при количестве элементов меньшем 20.

 

Heap

Имеет доказанную оценку худшего случая O(nlogn), однако на почти отсортированных массивах работает столь же долго, как и на хаотических данных.

 

Binary Tree

Данная сортировка является оптимальной при получении данных путём непосредственного чтения с потока (например, с файла, сокета или консоли).

 

Sorting Networks

Математическая модель, использующая параллельные компараторы. Найдены и доказаны эффективные алгоритмы для n<=8.

 

Bucket

Относится к классу быстрых алгоритмов с линейным временем исполнения O(N) (на удачных входных данных). Сильно деградирует при большом количестве мало отличных элементов.

 

Counting

Применение сортировки подсчётом целесообразно лишь тогда, когда сортируемые числа имеют (или их можно отобразить в) диапазон возможных значений, который достаточно мал по сравнению с сортируемым множеством, например, миллион натуральных чисел меньших 1000.