Que eu saiba, não existe um algoritmo de pior caso que resolva o seguinte problema:
Dada uma sequência de comprimento consiste em números inteiros finitos, encontre a permutação em que cada elemento é menor ou igual ao seu sucessor.
Mas existe uma prova de que não existe, no modelo transdicotômico de computação ?
Observe que não estou limitando o intervalo dos números inteiros. Também não estou limitando soluções a tipos de comparação.
Respostas:
Os números inteiros podem ser classificados de forma estável em tempo com espaço adicional.O(n) O(1) Mais precisamente, se você tiver números inteiros no intervalo , eles podem ser classificados em O (n).n [1,nc]
Isso foi demonstrado apenas alguns anos atrás por uma equipe incluindo o falecido Mihai Pătrașcu (que não deveria surpreender ninguém que esteja familiarizado com seu trabalho). É um resultado notável que me surpreende que mais pessoas não conheçam, porque significa que o problema de classificar números inteiros está (teoricamente) resolvido.
Existe um algoritmo prático (fornecido no artigo acima) se você puder modificar chaves. Basicamente, você pode compactar números inteiros classificados mais do que números inteiros não classificados, e o espaço extra que você ganha é precisamente igual à memória extra necessária para fazer a classificação do radix. Eles também fornecem um algoritmo impraticável que suporta chaves somente leitura.
fonte
Se não houver limite superior no tamanho dos seus números inteiros, não acredito que exista algum algoritmo de classificação de tempo linear conhecido.
fonte