Algorithme qui fonctionne comme Unix Sort

par exemple notre fichier d’entrée in.txt :

naturalistic 10 coppering 20 artless 30 

après la commande: sort in.txt

 artless 30 coppering 20 naturalistic 10 

après la commande: sort -n -k 2 in.txt

 naturalistic 10 coppering 20 artless 30 

Ma question: Comment puis-je gérer les lignes en sortingant les colonnes. Je veux que la ligne entière rest la même alors que son ordre en général change? Quel algorithme ou morceau de code est utile? S’agit-il de la lecture de fichiers ou de la facilité de sorting?

Le sort UNIX standard ne documente pas l’algorithme qu’il utilise. Il peut même choisir un algorithme différent en fonction d’éléments tels que la taille de l’entrée ou les options de sorting.

La page Wikipedia sur les algorithmes de sorting répertorie de nombreux algorithmes de sorting parmi lesquels vous pouvez choisir.

Si vous voulez un sorting stable, il y a beaucoup d’options (le tableau de comparaison sur la même page Wikipedia qui est stable), mais en fait, tout algorithme de sorting peut être stabilisé en étiquetant chaque élément avec sa position d’origine. et briser les liens dans la fonction de comparaison de clés en fonction de cette position.

A part ça, ce que vous demandez n’est pas très clair. Dans votre question, vous faites la démonstration de l’utilisation du sort avec et sans les options -n et -k , mais vous ne savez pas pourquoi cela devrait influencer le choix réel de l’algorithme de sorting …

Je voudrais juste créer une table de hachage des chaînes avec num comme clé et chaîne comme valeur (je suppose qu’elles sont uniques) et puis pour la commande sort , je sortingerais en fonction des valeurs et pour -n -k 2 I Triez en fonction des clés. Le standard POSIX ne dicte pas l’algo à utiliser, de sorte que différentes versions d’Unix peuvent utiliser des algos différents. Le sorting GNU utilise Merge Sort http://en.wikipedia.org/wiki/Merge_sort