Cualquier clasificación de varias estructuras de datos estará, al menos parcialmente, ligada al contexto del problema. Sería útil aprender a analizar el rendimiento espacial y temporal de los algoritmos. Normalmente, se utiliza la "notación O grande", por ejemplo, la búsqueda binaria está en tiempo O (log n), lo que significa que el tiempo para buscar un elemento es el registro (en base 2, implícitamente) del número de elementos. De manera intuitiva, dado que cada paso descarta la mitad de los datos restantes como irrelevantes, duplicar el número de elementos aumentará el tiempo en 1 paso. (La búsqueda binaria se escala bastante bien.) El rendimiento espacial se refiere a cómo crece la cantidad de memoria para conjuntos de datos más grandes. Además, tenga en cuenta que la notación O grande ignora los factores constantes: para conjuntos de datos más pequeños, un algoritmo O (n ^ 2) aún puede ser más rápido que un algoritmo O (n * log n) que tiene un factor constante más alto.
Además del tiempo y el espacio, otras características incluyen si una estructura de datos está ordenada (los árboles y skiplists están ordenados, las tablas hash no), persistencia (los árboles binarios pueden reutilizar punteros de versiones anteriores, mientras que las tablas hash se modifican en su lugar), etc.
Si bien necesitará aprender el comportamiento de varias estructuras de datos para poder compararlas, una forma de desarrollar una idea de por qué difieren en el rendimiento es estudiar de cerca algunas. Sugeriría comparar listas enlazadas individualmente, árboles de búsqueda binarios y listas de omisión , todos los cuales son relativamente simples, pero tienen características muy diferentes. Piense en cuánto trabajo se necesita para encontrar un valor, agregar un nuevo valor, encontrar todos los valores en orden, etc.
Hay varios textos sobre el análisis del rendimiento de la estructura de datos / algoritmos que la gente recomienda, pero lo que realmente hizo que tuvieran sentido para mí fue aprender OCaml. Lidiar con estructuras de datos complejas es el punto fuerte de ML, y su comportamiento es mucho más claro cuando puede evitar los punteros y la gestión de la memoria como en C. (Sin embargo, aprender OCaml solo para comprender las estructuras de datos es casi seguro que el camino más largo. :))