[Dúvida] Eu estou aprendendo ou apenas decorando?

Estrutura de Dados está me deixando maluco e provavelmente irei reprovar nessa cadeira; na teoria eu consigo diferenciar os algoritmos e entender o porque de um ser mais rápido que o outro dependendo da situação, só que eu não consigo aplicar esses conceitos na prática, tenho bastante dificuldade em lembrar dos tais algoritmos (o máximo que eu lembro é um BubbleSort pelo o fato de ter reescrito várias vezes), será que eu apenas estou decorando os algoritmos?

Como eu posso de fato compreender essa matéria? Será que eu deveria entender estrutura de dados usando pseudo-código? Ou apenas aprender em uma linguagem específica?

Talvez falte visualizar o funcionamento de cada um. No cana do link a seguir, existem diversos exemplos (algoritmos de ordenação e outras coisas). É tão leve que é possível fazer uma maratona e assistir todos os vídeos, mesmo no domingo. :D

e.g. Merge vs Quick Sort https://www.youtube.com/watch?v=es2T6KY45cA

acho que foi o primeiro passo que acabei realizando (confesso que alguns gifs me deixaram preso por um tempo maior do que eu gostaria tentando entender) agradeço muito pela dica e prometo olhar direitinho

Eu acredito que é muito importante conseguir visualizar o funcionamento dos algoritmos para entender bem o funcionamento deles.

Na época que eu fiz a faculdade, não tinha muitos recursos digitais pra isso, então, basicamente, eu pegava uma folha de papel e desenhava o passo a passo de como o algoritmo se comportaria com uma array aleatório...era trabalhoso, mas funcionava.

Hoje em dia, tem alguns sites que mostram isso já, e fazem comparação de eficiência também:

estava pensando que talvez eu devesse olhar mais o código em si; a imagem do funcionamento eu consigo criar, porém quando transcrevo em código nem sempre sai como o imaginado e acaba que fico muito dependende de um código que outra pessoa está fazendo. obrigado pelos links, irei checar todos
Entendi. Também é importante entender que a prática é fundamental, só por ler um artigo e entender o conceito sobre ele não implica que automáticamente você será capaz de fazer um algoritmo perfeito, você precisa praticar também. Não se aprende a tocar violão só lendo partitura, você precisa praticar os acordes também, na programação é a mesma coisa. Além disso, algumas coisas possuem pré-requisitos. Se você quer fazer um algoritmo bem feito, não basta conhecer a linguagem, você precisa conhecer design patterns e um monte de outras coisas para tomar as decisões corretas e escrever um bom código.