Хелпикс

Главная

Контакты

Случайная статья





Генератор перестановок. (Без доказательства)



Генератор перестановок. (Без доказательства)

1. Располагаем исходную перестановку в порядке убывания. (n … 321)

2. Находим наименьший индекс i, iÍ{2..n},при котором ai-1>ai

3. Находим наименьший индекс j, jÍ{1,2,…i-1},при котором aj>ai

4. Меняем местами aj и ai

5. Вычислим k=[i-1/2]. Если к=0, то ничего не делаем. Если к¹0, то меняем местами компоненты в парах: (a1,ai-1), (a2,ai-2), … , (ak,ai-k).

6. Выводим перестановку и если она больше чем 123 … n, то возвращаемся к шагу 2. (или завести счетчик перестановок, он должен быть равен n!)

 

Пример

1)    321 i=2, k=0

2)    231 i=3, k=1

       132

3)    312 i=2, k=0

4)    132 i=3, k=1

       123

5)    213 i=2, k=0

6)    123

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.