Когда начинать изучать алгоритмы и структуры данных?
Когда именно следует начинать знакомство с алгоритмами и структурами данных?Тема мне интересна,но она не так проста, как хотелось бы.Я пробовал изучать алгоритмы от Принстона, но после 150 страниц голой теории, я увидел практическую часть, т.е. как выглядит реализация того или иного алгоритма на конкретном языке, и понял, что я таких тонкостей языка еще и не знаю.С паттернами проектирования тоже самое.В превью
сказано, что читатель должен быть продвинутым в языке, что бы понимать, о чем мы тут говорим.
Даже в академии Хана, такой примитив как бинарный поиск, линейный поиск реализованы на JS, но что бы понять все, нужно понимание не хилое.Дайте совет, когда и как стоит приступать к этим вкусняшкам?Я скачал оч крутую литературу, и прям не терпится уже начать в этом всем разбираться.
Дайте совет, когда и как стоит приступать к этим вкусняшкам?
Когда у вас появятся релевантные задачи. Например, как вам уже рекомендовали, "олимпиадные". (рекомендую codeeval и codewars). Вы можете сначала решить задачу каким-либо "наивным" способом, затем поискать (спросить) подходящую структуру данных, сравнить производительность подходов. На мой взгляд, привязка к какой-никакой практике позволяет знаниям лучше усваиваться.
Еще могу порекомендовать курс (там две части) на coursera от Stanford за авторством Tim Roughgarden. Очень доступно объясняет.
Вы можете прочитать любую понравившуюся вам книгу, особо не отвлекаясь на разбор нюансов реализации языка программирования. Таким образом у вас сложится примитивный набросок всей картины. Через некоторое время можете заново перечитать эту же книгу и вы обнаружите для себя много новых моментов которые раньше упустили. И картина, в вашей голове, получит уже более четкие очертания.
Мне понравилась книга Роберт Седжвик, Кевин Уэйн "Алгоритмы на Java", 4-е издание . От автора есть так же курс на курсере. Глубокого понимания java не требуется, после каждой главы есть множество задач для самоконтроля.
хм, как раз основные книги по алгоритмам на псевдо языке программирования, без привязки к какому-либо языку, что-то похожее на паскаль например.
не буду Kнута советовать с его низкоуровневым языком,
есть вот тут "Алгоритмы" — Дасгупта С., Пападимитриу Х., Вазирани У. codeforces.com/blog/entry/12314
отличная книга для начинающих.
150 страниц голой теории? смысл? вспомните как в школе учились - 2-10 страниц теории + задачки по прочитанной теме и так далее в таком цикле. и конечно после каждой главы проверка + сложные задачи. как то так нужно обучаться точным наукам