Без дополнительных предположений нижняя граница для наихудшей временной сложности любого алгоритма, который использует сравнения, составляет BigTheta(nlogn)
. Отметим, что сортировка перестановки фактически будет обратной к р.Это означает, что если вы можете отсортировать p ({1,2, ... n), то вы сможете определить, какая перестановка была применена к вашим данным, из всех возможных перестановок.
Общее количество перестановок равно n !, и для каждого полученного информационного бита ваш набор разбивается на два набора, представляющих результаты, согласующиеся с этим битом.Поэтому вы можете представить поиск, для которого перестановка используется в качестве двоичного дерева, где каждый узел является набором перестановок, дочерние элементы узла являются разделами родительского набора, а листья - результатом вашего алгоритма.
Если ваш алгоритм определяет, какой раздел вы используете, листья будут одиночными, так что вы получите n!листья.Дерево с минимальной высотой, содержащее n!листьями является log (n!), который асимптотически nlog (n).http://lcm.csa.iisc.ernet.in/dsa/node208.html - хороший справочник для всего этого.