Há um livro a ser escrito em algum momento, com o título de trabalho Estruturas de Dados, Algoritmos e Trocas . Quase todos os algoritmos ou estruturas de dados que você provavelmente aprenderá no nível de graduação têm algum recurso que o torna melhor para alguns aplicativos do que para outros.
Vejamos a classificação como exemplo, já que todos estão familiarizados com os algoritmos de classificação padrão.
Primeiro, a complexidade não é a única preocupação. Na prática, os fatores constantes são importantes, e é por isso que, digamos, a classificação rápida tende a ser usada mais do que a classificação de pilha, mesmo que a classificação rápida tenha uma terrível complexidade do pior caso.
O ( n logn )
Em outros casos, as idéias de um algoritmo ou estrutura de dados podem ser aplicáveis a um problema de finalidade especial. A classificação por bolha parece ser sempre mais lenta que a inserção em hardware real, mas às vezes a idéia de executar uma passagem por bolha é exatamente o que você precisa.
Considere, por exemplo, algum tipo de visualização em 3D ou videogame em uma placa de vídeo moderna, onde você gostaria de desenhar objetos da ordem da mais próxima à câmera até a mais distante da câmera por razões de desempenho, mas se você não conseguir o pedido exato, o hardware cuidará dele. Se você estiver se movendo pelo ambiente 3D, a ordem relativa dos objetos não mudará muito entre os quadros, portanto, executar uma passagem de bolha por quadro pode ser uma troca razoável. (O mecanismo Source da Valve faz isso para efeitos de partículas.)
Há persistência, simultaneidade, localidade do cache, escalabilidade em um cluster / nuvem e várias outras razões possíveis pelas quais uma estrutura ou algoritmo de dados pode ser mais apropriada que outra, mesmo com a mesma complexidade computacional para as operações importantes para você.
Dito isto, isso não significa que você deve memorizar um monte de algoritmos e estruturas de dados por precaução. A maior parte da batalha é perceber que existe uma troca a ser explorada em primeiro lugar e saber onde procurar se você acha que pode haver algo apropriado.