Por lo que he visto, parece que la notación Big-O y la complejidad del tiempo y la memoria se enfatizan mucho en la educación formal en informática ... sin embargo, siendo autodidacta, esta percepción se basa en escuchar y leer lo que las personas con tales educaciones decir y escribir.
Aunque creo que las ideas y conceptos generales son importantes, no creo que la formalización de la misma (como la notación big-O y la terminología variada) sea tan importante, excepto para los fines de la comunicación. El hecho de que alguien no esté familiarizado con la notación formal y la terminología no significa que no puedan ver cómo y por qué un algoritmo sería más rápido que otro en un caso particular. Las personas pueden ver que el tiempo necesario para buscar un árbol binario equilibrado se relaciona con el logaritmo de base 2 del número de nodos sin primero aprender sobre la teoría de la complejidad en ningún sentido formal, si entienden cómo funciona el árbol y tienen una comprensión razonable de la alta matemáticas de la escuela Sin embargo, es importante saber cuándo prestar atención a la complejidad y el uso de la memoria, y considerar los casos típicos y peores ... pero algunas personas no lo hacen.
La notación y la terminología se vuelven importantes para la comunicación. Ofrecen una buena manera de transmitir una cuantificación del rendimiento de un algoritmo a otra persona. Debido a que aparece en documentos y explicaciones con frecuencia, es útil tener al menos una comprensión vaga para que sean más fáciles de seguir.
Entonces sí, los conceptos son importantes (aunque menos cuando los recursos y el tiempo son amplios pero los datos no lo son). Pero aunque los conceptos son importantes, la formalización de ellos a menudo no es tan importante, y uno debe recordar que la notación y la terminología no son las mismas que los conceptos mismos.
Editar:
No diría que entiendo los conceptos con tanto detalle como alguien que ha estudiado formalmente, pero muchas de las ideas generales simplemente tienen sentido. Creo que hay valor en estudiar esto formalmente, pero parte de ese valor todavía puede existir sin él.
En cuanto a la introducción de los conceptos (fuera del estudio formal), creo que un buen comienzo es alentar a las personas a pensar sobre la cantidad de memoria que tienen las estructuras de datos, qué pasos involucran los algoritmos y cómo cambian estas cosas con diferentes datos.
También ayuda a considerar situaciones y cambios hipotéticos, como considerar qué sucede si un árbol está equilibrado versus qué sucede si está tan desequilibrado como sea posible, o cuántos niveles en el árbol estarían la mayoría de los nodos, o cuántos nodos más puede sostenga si la profundidad aumenta un nivel. Esta forma de pensar es generalmente útil para los programadores de todos modos, no solo cuando se mira la complejidad; y si se aplica a pensar sobre cómo funcionan los algoritmos y las estructuras de datos en diferentes circunstancias, naturalmente apunta en la misma dirección que lo haría un examen más formal de la complejidad.
O(n^2)
significa.