Добрый день!
Рекомендую прочитать книгу Роберт Лафоре - Структуры данных и алгоритмы Java.
К вопросу о том, сколько алгоритмов нужно знать скажу, что достаточно знать базовые алгоритмы и пожалуй, владеть английским, чтобы при необходимости уметь разобраться в нужном.
Базовые:
- линейный поиск
- двоичный поиск
- пузырьковая сортировка
- быстрая сортировка
А так можно покопаться в других алгоритмах тоже (алгоритм Беллмана-Форда, алгоритм Дейкстры, алгоритм А*, кодирование Хаффмана, алгоритм ruin & recreate для решения VRP &TRP, ханойская башня и т.д.). Сам сейчас разбираюсь с некоторыми из них, так как приходится применять их в проекте.
Кстати, есть простое приложение для андроид, которое описывает суть разных алгоритмов при помощи инфографики.
https://play.google.com/store/apps/details?id=wiki...
А вот, тут репозиторий с алгоритмами на Java
https://github.com/TheAlgorithms/Java