Я изучаю Java сейчас несколько дней.
Я хочу быть успешным корпоративным разработчиком. Тогда с какими алгоритмами и структурами данных я должен хорошо разбираться? Какие книги ты бы мне порекомендовал?
Чтобы быть успешным Java-разработчиком, мне нужно знать все продвинутые алгоритмы, такие как приведенные в CLRS?
Можете ли вы предложить мне список тем, которые я должен изучать в порядке убывания их приоритета?
Скажите мне названия некоторых тем, которые я должен знать. Как поиск, сортировка, графики, деревья и т. Д.?
Хорошо, что вы стремитесь расширить и улучшить свои навыки программирования. Однако важно не рассматривать алгоритмы как каталог вещей для запоминания. То, что вам нужно знать, чтобы стать хорошим разработчиком (на Java или что-либо еще в этом отношении), это понимать алгоритмический анализ.
Вы узнаете об этом, изучив несколько избранных структур данных и алгоритмов и научившись анализировать их производительность с точки зрения времени и пространства (памяти). Поиск, сортировка, графики, деревья, кучи, стеки и все такое хорошее. Это также должно следовать некоторым основам теории вычислений и дискретной математики (даже если в области Java нам никогда не удастся использовать эти две темы напрямую - их преимущества косвенные).
Разделите изучение языка программирования (в вашем случае Java) с изучением алгоритмического анализа (который отличается от «запоминания» алгоритмов и структур данных.)
«Алгоритмы в двух словах» Джорджа Т. Хейнемана, Гэри Поллиса и Стэнли Селкова - хорошее начало. «Алгоритмы» Санджоя Дасгупты, Христоса Пападимитриу и Умеша Вазирани - еще один хороший учебник для студентов.
Лучше всего взять 9-12 кредитных курсов по программированию, а затем пройти курс обучения 3000-уровневому алгоритму. Если исключить это, самостоятельная работа с двумя упомянутыми мною книгами может быть хорошей альтернативой (однако самостоятельная работа может быть не для всех)
Удачи!