Введение в алгоритмы Кормен и др. al. - это стандартная вводная книга по алгоритмам, которую используют многие университеты, в том числе и мой собственный. Он имеет довольно хорошее покрытие и очень доступен.
И что-нибудь Роберта Седжвика тоже хорошо.
Если вы хотите, чтобы алгоритмы были реализованы специально на Java, то есть книга серии Митчелла Уэйта «Структуры данных и алгоритмы в Java». Он начинается с базовых структур данных, таких как связанные списки, стеки и очереди, а также с основных алгоритмов сортировки и поиска. Пройдя через него, вы в конечном итоге дойдете до древовидных структур данных, красно-черных деревьев, 2-3 деревьев и графиков.
В целом это не слишком теоретическая книга, но если вам просто нужно введение на знакомом вам языке, то это хорошая книга. В конце концов, если вы хотите глубже понять алгоритмы, вам придется изучить некоторые из более теоретических концепций и прочитать одну из классических статей, например, Введение в алгоритмы Кормена / Лейзерсона / Ривеста / Штайна.
Если вам не нужен полный справочник по большей части используемых алгоритмов и структур данных, а вы просто хотите познакомиться с общими методами Я бы порекомендовал что-нибудь более легкое, чем Cormen, Sedgewick или Knuth. Я думаю, что Алгоритмы и структуры данных Н. Вирта - не такой уж плохой выбор, даже несмотря на то, что он был напечатан очень давно.
Я думаю, что введение в алгоритмы - это справочник, и он должен быть у любого серьезного программиста.
http://en.wikipedia.org/wiki/Introduction_to_Algorithms
Другая интересная книга - Руководство по разработке алгоритмов http://www.algorist.com/ . Он охватывает более сложные алгоритмы.
Не могу не упомянуть Искусство компьютерного программирования Кнута http://www-cs-faculty.stanford.edu/~knuth/taocp.html