Я зараз навчаюсь Java.
Я хочу бути успішним розробником підприємства. Тоді з якими алгоритмами та структурами даних я повинен добре розбиратися? Які книги ви мені рекомендуєте?
Щоб бути успішним розробником Java, чи потрібно мені знати всі вдосконалені алгоритми, такі, як наведені в CLRS?
Чи можете ви запропонувати мені список тем, які я повинен вивчити у порядку зменшення їх пріоритетності?
Скажіть мені назву деяких тем, які я повинен знати. Як пошук, сортування, графіки, дерева тощо?
Добре, що ви прагнете розширити та вдосконалити свої навички програмування. Однак важливо не трактувати алгоритми як каталог речей, що запам'ятовуються. Що потрібно знати, щоб стати хорошим розробником (на Java або що-небудь ще з цього питання) - це зрозуміти алгоритмічний аналіз.
Ви дізнаєтесь це, вивчивши декілька структур даних та алгоритмів та навчившись аналізувати їхню ефективність у часі та просторі (пам'яті). Пошук, сортування, графіки, дерева, купи, усі ці добрі речі. Слід також слідувати деяким основам теорії обчислень та дискретної математики (навіть якщо в царині Ява нам ніколи не вдасться безпосередньо використовувати ці дві теми - їх переваги непрямі.)
Відокремте вивчення мови програмування (у вашому випадку Java) з вивченням алгоритмічного аналізу (що відрізняється від "запам'ятовування" алгоритмів та структур даних.)
Джордж Т. Хайнеман, Гері Полліс та Стенлі Селков «Алгоритми в горіху» - це хороший початок. «Алгоритми» Санджоя Дасгупта, Хрістоса Пападімітріу та Умеша Вазірані - ще один хороший підручник з недооцінки .
Найкраще подумати - пройти 9-12 кредитних курсів програмування перед тим, як взяти нижчий, 3000-рівень рівня алгоритмів. Заперечуючи це, самонавчання з двома згаданими мною книгами може бути хорошою альтернативою (хоча самонавчання може бути не для всіх.)
Удачі!