Теория алгоритмов
- 1 year ago
- 0
- 0
Алгори́тм Нарайа́ны — нерекурсивный алгоритм , генерирующий по данной перестановке следующую за ней перестановку (в лексикографическом порядке ). Придуман индийским математиком в XIV веке .
Если алгоритм Нарайаны применить в цикле к исходной последовательности из элементов , упорядоченных так, что , то он сгенерирует все перестановки элементов множества в лексикографическом порядке.
Другой особенностью алгоритма является то, что необходимо запоминать только один элемент перестановки.
В случае перестановки, где элементы перемешаны случайным образом, сложность алгоритма практически не зависит от количества элементов. В приведённых производится в среднем 3 сравнения элементов перестановки и 2.17 обменов.
Наилучшим является случай, когда предпоследний элемент перестановки больше последнего, тогда производится 2 сравнения и 1 обмен. Худшим является случай, когда элементы перестановки отсортированы по убыванию, и, если длина перестановки равна n, то производится n+1 сравнений и n/2+1 обменов.
В целом сложность алгоритма можно оценить как O(n).
![]() |
В статье
не хватает
ссылок на источники
(см.
рекомендации по поиску
).
|
Для улучшения этой статьи
желательно
:
|