Получение следующего объекта — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 1: Строка 1:
 +
== Определение ==
 +
'''Получение следующего объекта''' - это нахождение следующего объекта в лексико графическом порядке
 +
 
== Алгоритм ==
 
== Алгоритм ==
 
Находим максимальный общий префикс, после него ставим минимальный возможный элемент и дописываем минимальный возможный хвост.
 
Находим максимальный общий префикс, после него ставим минимальный возможный элемент и дописываем минимальный возможный хвост.

Версия 06:49, 12 ноября 2010

Определение

Получение следующего объекта - это нахождение следующего объекта в лексико графическом порядке

Алгоритм

Находим максимальный общий префикс, после него ставим минимальный возможный элемент и дописываем минимальный возможный хвост.


Пример (перестановки)

Каждая следующая перестановка строится следующим образом:

Двигаясь с конца массива сравниваем соседние элементы, если a[i - 1] > a[i] двигаемся дальше, если a[i - 1] < a[i], m := i - 1(поскольку мы нашли m дальше не смысла двигаться) выходим из цикла. k := i, такое что a[i] > a[m] и a[i] = min(a[i]), при i > m. Меняем местами a[m] и a[k] местами. Осталось упорядочить по возрастанию элементы, стоящие справа от нового m-го элемента, но т.к. они упорядочены по убыванию, достаточно их обернуть.



Ссылки

Дискретная математика : алгоритмы

Википедия - свободная энциклопедия