www.williamspublishing.com/Books/5-8459-0857-4.html вот эта книжечка мне пригодилась.
а в общем — рекоемндую решать микрозадачи. Например, чувствуешь, что с деревьями проблемы. Пишешь приложение, которое реализует какую-нибудь сортировку, замеряешь время выполнения, исследуешь алгоритм, ищешь пути совершенствования.
Так же есть ресурс
acm.timus.ru где собран мильён олимпиадных задач. Когда их решаешь, получаешь эмоциональный кайф и хотя порой кажется, что ничего не узнал и не постиг, на самом деле набиваешь руку в «сложных» задачах.
А какие конкретно тебе алгоритмы, например, не понятны? Динамическое программирование? Сортировки?
Из какой области? Задачи оптимизации (типа поиска оптимального маршрута) или, например, криптографические алгоритмы?