Дж. Макконнелл - Основы современных алгоритмов. В учебном пособии обсуждаются алгоритмы решения наиболее широко распространенных классов задач, покрывающих практически всю область программирования: поиск и сортировка, численные алгоритмы и алгоритмы на графах. Особое внимание уделено алгоритмам параллельной обработки. Изложение неформальное и чрезвычайно подробное, с большим количеством упражнений, позволяющих вести самоконтроль. Книга нужна всем, кому приходится самостоятельно писать программы - от программистов банковских систем до научных работников.
Вы задали вопрос в теме JAVA, делаю вывод что его вы изучаете и имеете ввиду основы ООП... Лично я учусь по книге Head First Java (в интернете можно найти в электронном виде на русском или купить бумажную) там и теория и практика... А вообще ребята в комментах очень советуют Хорстмана