Il y a un manuel qui doit être écrit à un moment donné, avec le titre de travail Structures de données, algorithmes et compromis . Presque tous les algorithmes ou structures de données que vous êtes susceptible d'apprendre au premier cycle possèdent certaines fonctionnalités qui le rendent meilleur pour certaines applications que pour d'autres.
Prenons l'exemple du tri puisque tout le monde connaît les algorithmes de tri standard.
Tout d'abord, la complexité n'est pas le seul souci. En pratique, les facteurs constants sont importants, raison pour laquelle (par exemple) le tri rapide a tendance à être utilisé davantage que le tri en tas, même si le tri rapide a une terrible complexité dans le pire des cas.
O(nlogn)
Dans d'autres cas, les idées d'un algorithme ou d'une structure de données peuvent être applicables à un problème spécifique. Le tri à bulles semble toujours plus lent que le type à insertion sur du matériel réel, mais l’idée de réaliser une passe à bulles est parfois exactement ce dont vous avez besoin.
Prenons, par exemple, une sorte de visualisation 3D ou de jeu vidéo sur une carte vidéo moderne, dans laquelle vous souhaitez dessiner des objets dans l’ordre le plus proche de l’appareil photo, pour des raisons de performances, mais si vous ne recevez pas la commande exacte, le matériel s'en chargera. Si vous vous déplacez dans l'environnement 3D, l'ordre relatif des objets ne changera pas beaucoup d'une image à l'autre. Par conséquent, le passage d'une bulle à chaque image peut constituer un compromis raisonnable. (Le moteur Source de Valve le fait pour les effets de particules.)
Il existe persistance, concurrence, localisation du cache, évolutivité sur un cluster / nuage et une foule d'autres raisons possibles pour lesquelles une structure de données ou un algorithme peut être plus approprié qu'un autre, même avec la même complexité de calcul pour les opérations qui vous intéressent.
Cela dit, cela ne signifie pas que vous devez mémoriser un tas d’algorithmes et de structures de données au cas où. La majeure partie de la bataille consiste à réaliser qu’il ya un compromis à exploiter en premier lieu, et à savoir où chercher si vous pensez qu’il pourrait y avoir quelque chose d’approprié.