Existem várias ou soluções piores, mas estou procurando uma que seja executada em ou uma prova de que não existe.
Existem várias ou soluções piores, mas estou procurando uma que seja executada em ou uma prova de que não existe.
O artigo de 2007, ranking de permutações em tempo linear, fornece um algoritmo de classificação em tempo linear para a ordem lexicográfica, assumindo que a aritmética nos números de comprimento leva tempo constante.
O artigo de 2001, Ranking e permutações de desagregação no tempo linear, apresenta um algoritmo de classificação linear no tempo que não exige aritmética rápida em grandes números, mas não para a ordem lexicográfica. Quanto a este último, afirma
Todo o problema de classificar permutações em ordem lexicográfica parece inextricavelmente entrelaçado com o problema de calcular o número de inversões em uma permutação, e parece que será necessário um grande avanço para fazer essa computação em tempo linear, se é que é possível .
Por outro lado, menciona um algoritmo para classificar permutações em ordem lexicográfica devido a Dietz.
Já que a resposta está sendo boa, adicionarei outra referência (mais recente) aqui:
Um novo método para gerar permutações em ordem lexicográfica, por TING KUO (2009)
propõe um método para gerar, classificar e liberar permutações em ordem lexicográfica, além de alguns novos recursos, como gerar uma permutação que está a uma determinada distância de outra permutação.
A complexidade é novamente do ordem