В этом блоге я делюсь своим опытом изучения различных структур данных и алгоритмов (DS&A) и тем, как я нашел гораздо лучшее понимание, потратив время на создание приложения, которое использовало то, что я узнал.

Чуть больше месяца назад, в начале февраля, я решил потратить время на изучение DS&A в надежде, что их изучение позволит мне использовать их для будущих проектов, собеседований и работы. Каждый день я тратил много часов на изучение различных концепций. Изучение того, как проходить бинарные деревья поиска, понимание различий между хэш-картами и объектами, запоминание большой нотации O различных алгоритмов сортировки и т. д.

Однако во время обучения меня что-то беспокоило. Я смог запомнить все эти концепции, однако обучение казалось очень поверхностным, и я думал про себя: «Знаю ли я, когда действительно использовать эту информацию?» или «вспомню ли я это через месяц или два?». Реалистичный ответ на эти вопросы был… не совсем, по крайней мере, не с тем уровнем понимания, которого я хотел.

Именно тогда я решил перевести свое обучение на более глубокий уровень и создать приложение, в котором использовались бы эти концепции. Приложение, которое не только использовало бы DS&A, но и позволяло бы другим, использующим приложение, понять, как оно работает. Итак, я начал создавать веб-приложение, которое берет структуры данных или алгоритм и создает анимацию, которая шаг за шагом проходит через процесс их работы.

Эффект, который это оказало на мое обучение, был немедленным. Я начал с анимации алгоритмов сортировки, сортировки слиянием, быстрой сортировки и пузырьковой сортировки. Затем быстро перешел к обходу бинарных деревьев поиска, выясняя, как анимировать добавление или поиск узлов и их соединений.

Потраченное время на обдумывание каждого из задействованных шагов, чтобы я мог выделить различия в своих анимациях, позволило мне понять детали значительно лучше, чем просто делать заметки. Мое обучение больше не сводилось к запоминанию. Теперь я взял концепцию и использовал каждый ее аспект, чтобы создать визуализацию, которую легко понять. Мое понимание значительно улучшилось, и я обнаружил, что наслаждаюсь временем, которое я провел, поглощенный своим обучением.

В настоящее время я изучаю и внедряю анимацию для имитации алгоритмов поиска пути и могу с уверенностью сказать, что этот процесс не только позволил мне изучить концепции на более глубоком уровне, но и улучшил мои навыки разработчика. Если вы в настоящее время изучаете или планируете изучать DS&A, то я настоятельно рекомендую не просто делать заметки, а найти способ применить полученную информацию. Если вы чем-то похожи на меня, вы найдете обучение гораздо более приятным и увидите значительное улучшение того, как много вы изучаете.