def narayana_algo(arr): n = len(arr) k = -1 for i in range(n-1, 0, -1): if arr[i] > arr[i-1]: k = i - 1 break if k == -1: arr.reverse() return arr for i in range(n-1, k, -1): if arr[i] > arr[k]: arr[i], arr[k] = arr[k], arr[i] break arr[k+1:] = reversed(arr[k+1:]) return arr # Пример использования arr = [1, 2, 3] print(narayana_algo(arr)) # [1, 3, 2]
Этот код реализует алгоритм Нараяны для перестановок. В функции narayana_algo передается массив arr, который нужно переставить по алгоритму Нараяны. Функция возвращает следующую перестановку массива arr в лексикографическом порядке.
Пример использования данной функции также представлен в коде.
Вот реализация алгоритма Нараяны на Python:
def narayana_algo(arr):n = len(arr)
k = -1
for i in range(n-1, 0, -1):
if arr[i] > arr[i-1]:
k = i - 1
break
if k == -1:
arr.reverse()
return arr
for i in range(n-1, k, -1):
if arr[i] > arr[k]:
arr[i], arr[k] = arr[k], arr[i]
break
arr[k+1:] = reversed(arr[k+1:])
return arr
# Пример использования
arr = [1, 2, 3]
print(narayana_algo(arr)) # [1, 3, 2]
Этот код реализует алгоритм Нараяны для перестановок. В функции narayana_algo передается массив arr, который нужно переставить по алгоритму Нараяны. Функция возвращает следующую перестановку массива arr в лексикографическом порядке.
Пример использования данной функции также представлен в коде.