Comment puis-je trier les nombres lexicographiquement?

Voici le scénario.

Je me suis donné un tableau 'A' des nombres entiers. La taille du tableau n'est pas fixe. La fonction que je suis censé écrire peut être appelé qu'une seule fois avec un tableau de quelques nombres entiers tandis que l'autre fois, elle peut même contenir des milliers de nombres entiers. En outre, chaque entier n'a pas besoin de contenir le même nombre de chiffres.

Je suis censé pour "trier" les chiffres dans le tableau de telle sorte que la matrice résultante a les entiers ordonnés dans une lexicographique (j'.e ils sont triés en fonction de leurs représentations de chaîne. Ici, "123" est la représentation de chaîne d'123). Veuillez noter que la sortie doit contenir des entiers, pas de leur chaîne équivalents.

Par exemple: si l'entrée est:

[ 12 | 2434 | 23 | 1 | 654 | 222 | 56 | 100000 ]

Le résultat doit être:

[ 1 | 100000 | 12 | 222 | 23 | 2434 | 56 | 654 ]

Mon approche initiale: je me suis converti chaque entier à son format de chaîne de caractères, puis ajouter des zéros à son droit de faire tous les entiers contiennent le même nombre de chiffres (ce qui était le sale l'étape, car elle porte sur le suivi etc rendant la solution très inefficace) et puis ne radix de tri.
Enfin, j'ai enlevé le collier de zéros, convertis les chaînes de retour à leur entiers et les mettre dans le tableau résultant. C'était une solution inefficace.

J'ai été amené à croire que la solution n'a pas besoin de rembourrage, etc et il y a une solution simple où vous avez juste à traiter les nombres d'une certaine façon (un peu?) pour obtenir le résultat.

Qu'est-ce que l'espace-sage, la solution la plus efficiente que vous pouvez penser? Avec le temps?

Si vous donnez le code, je préfère Java ou en pseudo-code. Mais si cela ne vous convient pas, toute langue doit être fine.

source d'informationauteur Skylark