С чего начать изучать алгоритмы?

Добрый день, подскажите пожалуйста по поводу алгоритмов. Вообще не понимаю, сначала нужно учить язык, а потом алгоритмы? Решила изучать Java и одновременно изучать алгоритмы. Мне посоветовали для начинающих книгу "Алгоритмы: построение и анализ" автор Кормен и Лейзерсон - но там с самого начала вообще все не понятно. Вот не понимаю, сначала нужно изучать саму Джаву, а потом уже заниматься по алгоритмам? Или мне вообще математику подтягивать нужно, раз ничего не понимаю. А сами алгоритмы из книги нужно выучить или просто ознакомится и потом находить их? Объясните пожалуйста.
  • Вопрос задан
  • 10100 просмотров
Пригласить эксперта
Ответы на вопрос 3
@dmshar
Нужно понять, кем вы стремитесь стать - кодировщиком или разработчиком.
Если кодировщиком - то выучили язык и бегом - по готовому, кем-то составленному ТЗ - писать программы и деньги зарабатывать.
Если разработчиком - то без знания алгоритмов вам не обойтись. Вы сами должны будете уметь хотя-бы из имеющихся реализаций выбрать наиболее подходящую или эффективную. А возможно и модифицировать их именно с учетом конкретного приложения. А "рядом" с алгоритмами обычно изучаются структуры данных - без них разработчику (а не кодировщику) - тоже никак.
Этап изучения языка - это база. Другое дело, что учить "голый" язык бывает скучновато. И это обучение "разбавляют" всякими простенькими задачами -в том числе из области алгоритмизации. Ну, к примеру, поиск максимального элемента в массиве, или простейшие сортировки. Но это не более, чем база. Хотя многие почему-то гордо считают, что это и есть изучение "алгоритмов и структур данных".
А этап изучения алгоритмов - это уже более высокая ступень совершенствования в профессии.
Но и изучаются эти две дисциплины по-разному. Изучение языка - это как в школе. Многие вещи надо помнить наизусть. Вы не будете за синтаксисом каждого оператора лазить в Google. Знания языка, умение кодить - это как навык, который должен срабатывать даже во сне. А вот алгоритмы и структуры данных изучаются уже действительно на уровне понимания. Необходимо не запоминать, но понимать, какие они есть, когда они могут оказаться полезными, в чем отличие одного от другого. А при случае - суметь задать умный (!!!) вопрос Google и в море "шлакоответов" найти - и главное понять - правильный.
Что-до книг. Кормен и Лейзерсон для новичка, действительно, сложноват.
Но во-первых, есть его "прямая адаптация": Бхаргава А. - Грокаем Алгоритмы. Иллюстрированное пособие для программистов и любопытствущих - 2017. То же самое, но проще.
Во-вторых, тот же Кормен написал еще одну книгу: Кормен Алгоритмы. Вводный курс. Вот ее можно уже рекомендовать и для новичка.
Кроме того, могу порекомендовать сайты, с вполне доступными материалами:
algolist.manual.ru
aliev.me/runestone
И в сети - если совсем лень - есть сегодня куча неплохих видеокурсов. Так что - удачи.
Ответ написан
Комментировать
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Во-первых, сначала язык, потом алгоритмы. Во-вторых, Кормен со старта - это жестоко. Ещё бы Кнута посоветовали. Возьмите лучше "Структуры данных и алгоритмы Java" Роберта Лафоре, зайдёт намного проще. В-третьих, алгоритмы не надо заучивать и не надо с ними знакомиться, их надо понять.
Ответ написан
Комментировать
@dimoff66
Кратко о себе: Я есть
Не нужно никогда и ни при каких обстоятельствах учить алгоритмы. Нужно знать об их существовании и при необходимости подсмотреть. Все необходимые алгоритмы инкапсулированы в методы языков. Вам не нужно знать алгоритмы сортировки, потому что в методах sort языков они реализованы более менее оптимально. Теоретически может возникнуть ситуация, когда необходимо сделать сортировку супербыстрой, но для новчика это вообще не является задачей №1 и даже номер 5.

Поэтому только язык и реальные проекты, где вы пишете все сами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы