Вы не можете изучить алгоритм проектирования только от чтения книг. Конечно, книги могут помочь. Книги, такие как Программирование Pearls, как предложено в другом ответе, великолепно, потому что они дают вам проблемы для работы. Каждая проблема заставляет задуматься о том, как решить конкретный тип проблемы.
Идея состоит в том, что вы подвергаете себя различным проблемам и решениям. При этом вы узнаете, как исследовать проблему и посмотреть, имеет ли она что-либо общее с проблемами, которые вы уже видели. В этом отношении это не намного отличается от того, как вы научились решать «проблемы слов» в математическом классе. Конечно, большинство проблем с алгоритмами сложнее, чем выяснять, где на дорожках будут сталкиваться два поезда, но то, как вы научитесь решать проблемы, одинаково. Вы изучаете общие методы, используемые для решения простых задач, затем объединяете эти методы для решения более сложных проблем и т. Д.
Прочитайте, попрактикуйтесь, прополощите, промойте, повторите.
В дополнение к книгам, как Программирование Pearls, есть сайты в Интернете, которые публикуют различные задачи программирования, которые вы можете проверить самостоятельно.Это помогает, если у вас есть друзья или коллеги, которые также заинтересованы в алгоритмах, потому что вы можете отскакивать идеи друг от друга и создавать интересные проблемы или работать вместе, чтобы придумывать решения проблем.
Я упоминал, что это требует практики?
«Освоение» требует чего-то. Долго. Популярная теория заключается в том, что на практике требуется 10000 часов практики, чтобы стать экспертом. Есть некоторые споры об этом для конкретных начинаний, но в целом это правда. Вы ничего не осваиваете за одну ночь. Ты должен учиться. И практика. И прочитайте, что сделали другие. Изучите еще немного и попрактикуйтесь еще немного.