Bonjour.
Experts avides de perfs en C++ j'ai une question pour vous.
Voilà mon problème :
Au départ j'ai une liste d'entiers 64 "unsigned long long int" qui peut être très longue (genre peser 4Go en mémoire). Ces nombres sont au départ dans un ordre aléatoire. En sortie je voudrais obtenir ces nombres classés du plus petit au plus grand (ou du plus grand au plus petit, peu importe) accompagnés de leurs indices avant classement.
Ma question est la suivante : quelle est la solution permettant de produire le code le plus rapide (ceci sera au coeur d'un algo plus conséquent donc pour cette partie chaque tick d'horloge compte) ?Exemple :
Avant
Nombres : 32 91 11 72
Indices : 0 1 2 3
Après
Nombres : 11 32 72 91
Indices : 2 0 3 1
Par "solution" je veux dire : quels conteneurs utiliser ? Comment classer également les indices lors du processus (structure, std::pair, std::map...) ? Quel algorithme utiliser (std::sort, qsort ou peut être autre chose) ? Etc...
La question peut paraître très naïve, mais dans un contexte où "chaque tick d'horloge compte", cela n'est pas si évident que ça pour moi...
Merci beaucoup.
Partager