Pelo que vi, parece que a notação O-grande e a complexidade do tempo e da memória são muito enfatizadas na educação formal em ciência da computação ... mesmo sendo autodidata, essa percepção se baseia em ouvir e ler o que as pessoas com essa educação têm. fale e escreva.
Embora eu acredite que as idéias e conceitos gerais sejam importantes, não acredito que a formalização dela (como notação O-grande e várias terminologias) seja tão importante quanto a questão, exceto para os propósitos de comunicação. Só porque alguém não está familiarizado com a notação formal e a terminologia não significa que não pode ver como e por que um algoritmo seria mais rápido que outro em um caso específico. As pessoas podem ver que o tempo gasto para pesquisar uma árvore binária balanceada está relacionado ao logaritmo da base 2 do número de nós, sem primeiro aprender sobre a teoria da complexidade em qualquer sentido formal, se eles entenderem como a árvore funciona e se tiverem uma compreensão razoável da alta matemática escolar. É importante saber quando prestar atenção à complexidade e ao uso da memória e, no entanto, considerar os casos típicos e os piores ... mas algumas pessoas não.
A notação e a terminologia se tornam importantes para a comunicação. Eles fornecem uma boa maneira de transmitir uma quantificação do desempenho de um algoritmo para outra pessoa. Como aparece em documentos e explicações com frequência, é útil ter pelo menos um entendimento vago disso, para facilitar o acompanhamento.
Portanto, sim, os conceitos são importantes (embora menos quando os recursos e o tempo são amplos, mas os dados não são). Mas, embora os conceitos sejam importantes, a formalização deles geralmente não é tão importante - e é preciso lembrar que a notação e a terminologia não são as mesmas que os próprios conceitos.
Editar:
Eu não pretendia entender os conceitos com tanto detalhe quanto alguém que estudou formalmente, mas muitas das idéias gerais fazem sentido. Eu acho que há valor em estudar formalmente isso, mas parte desse valor ainda pode existir sem.
Quanto à introdução dos conceitos (fora do estudo formal), acho que um bom começo é incentivar as pessoas a pensar em quanta memória adicional as estruturas de dados têm, quais etapas os algoritmos envolvem e como essas coisas mudam com dados diferentes.
Também ajuda a considerar situações e mudanças hipotéticas, como considerar o que acontece se uma árvore é equilibrada versus o que acontece se for o mais desequilibrado possível, ou quantos níveis na árvore a maioria dos nós seria ou quantos outros nós podem segure se a profundidade aumentar um nível. De qualquer maneira, esse modo de pensar é útil para programadores, não apenas quando se olha para a complexidade; e se aplicado ao pensamento sobre o desempenho de algoritmos e estruturas de dados em diferentes circunstâncias, naturalmente aponta na mesma direção que um exame mais formal da complexidade.
O(n^2)
significa.