Илья Билаш
А не надо учить все алгоритмы. Это по сути справочная информация. Ты должна понимать только, какую задачу какой алгоритм решает. Ещё иногда полезно помнить про ограничения - где-то быстродействие, где-то лимит памяти, где-то операции ввода- вывода... Но опять таки - эти нюансы уже можно посмотреть, когда ты четко определишь, какие алгоритмы подходят для поставленной задачи. Реализацию алгоритмов запоминать нет никакого смысла - они либо уже есть в библиотеках, либо накрайняк уже можно и написать, освежив в памяти описание и обвешавшись тестами. Но это экстремально редкая ситуация на самом деле.
Тут +. Но, увы, часто на собеседованиях спрашивают их именно наизусть, и плевать, что на практике тебе это знать на память не надо