Среди прочего ШАД рекомендует для подготовки эту книгу:
Вирт. Алгоритмы и структуры данных.
В своё время читал - хорошая книга. Какой язык использовать, не принципиально, тем более что код будет довольно похожий. Главное, чтобы книга была хорошая.
Возможно, Java выбрали для обучения потому, что довольно много доступно визуальных средств разработки для любой платформы, кроме того, не нужно вдаваться в нюансы работой с памятью, а можно сосредоточиться только на математике.
Хотя с точки зрения реализации высокопроизводительных низкоуровневых алгоритмов, предполагаю, что рациональнее их делать на С/С++, чем на Java.
Но сначала поймите сначала сами принципы, а потом сможете реализовать их на любом нужном языке.