butteff
@butteff
Раз в тысячу лет заправляю свитер в носки

Базовые знания алгоритмов?

Я занимаюсь быдлокодвебмакакингом, очевиджно же, что в этой сфере алгоритмы используются крайне редко, потому что задачи иные, куда важнее паттерны проектирования и нагрузки, которые код создает, безопасность. Конечно, нагрузки во многом зависят от алгоритмов, но только тогда, когда нужны вычисления или отсортировка, поэтому хочется, чтобы это было производительно. Конечно же некоторые базовые знания есть и про сортировку пузырьком, к примеру, я в курсе. Иногда, разумеется, включается логика и быстрый и хороший вариант можно придумать и написать самому. Однако, какие-то фундаментальные знания иметь хотелось бы. Недавно тест проходил с вопросами "какой тип дерева на рисунке", что такое деревья я знаю, но определения их типов - нет. Есть ли что-то небольшое, для ознакомления со всем этим, но безх фанатизма? Трехтомники читать не очень хотелось бы, но выходные почитать основы - мне бы хватило более чем.
  • Вопрос задан
  • 4430 просмотров
Решения вопроса 2
@denkl
Есть ли что-то небольшое, для ознакомления со всем этим, но безх фанатизма?

Есть. Всем известный Кормен написал еще Алгоритмы. Вводный курс.
Базовые алгоритмы (сортировка, поиск, графы, строки, криптография, сжатие), псевдокод, неформальный стиль, чуть более двухсот страниц. Проще для въезжания/ознакомления не встречал.
Ответ написан
@dmitryKovalskiy
программист средней руки
Пригласить эксперта
Ответы на вопрос 4
demoded
@demoded
какраз 4 сентября начнется. https://www.coursera.org/course/algs4partI
читает сам Седжвик https://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D0%B4%D...,_%D0%A0%D0%BE%D0%B1%D0%B5%D1%80%D1%82
очень доходчиво все объясняется с картинками и анимацией. потом шикарные тесты, и практическое задание.
но сложно...
но очень затягивает :)
Ответ написан
Комментировать
@Rinnve
Поддерживаю идею насчёт курсов на Курсере (но только если английский более-менее на слух воспринимаете, субтитры там очень неточные). Курсы Algorithms I / Algorithms II Принстонского университета (ведёт сам Седжвик), и курсы Design of Algorithms I / Design of Algorithms II Стэнфордского университета. Во-первых, ограничения по времени и необходимость не только читать/слушать, но и выполнять задания неплохо мотивирует. Во-вторых, конкретно Принстонский курс имеет просто шикарнейший авто-проверщик программистских задач, который тестирует и корректность, и расходы памяти в сравнении с эталонным решением, и эффективность по времени (опять же в сравнении с эталонным решением). Советую пройти оба курса, Принстонский более ориентирован на кодирование (Java 7), задачи там посложнее, Стэнфордский больше внимания уделяет доказательствам корректности (они помогают лучше понять некоторые алгоритмы), задачи довольно простые. По времени где-то пару часов в неделю на каждый курс, 6 недель.
Ответ написан
Комментировать
@coodan
Интересный вопрос. Может быть, если есть интерес общего плана, стоит посмотреть в сторону языков программирования, более ориентированных на работу с алгоритмами.

Например, С++ с его STL. В основе STL - так называемые контейнеры. Контейнер в понимании STL - это некоторый объект, который содержит другие объекты. А к этим контейнерам есть так называемые алгоритмы. Алгоритм в понимании STL - это некоторый код, который будет работать с объектами из контейнера в заданном диапазоне. То есть, одной строчкой натравливаешь нужный алгоритм на нужный контейнер и говоришь - копать от сих до сих - и все, дело в шляпе. Самые нужные алгоритмы уже заданы - та же сортировка различными способами, например. Сомневаюсь, что можно сделать ту же сортировку более надежно и эффективно, чем это сделали разработчики библиотеки. При желании можно задавать собственные алгоритмы.

Ориентация языка на работу с алгоритмами не поможет, конечно, более глубоко их понимать и создавать. Но от изобретения велосипедов убережет. И мысль в нужном направлении направит.
Ответ написан
Комментировать
@forroegor08
Если без фанатизма и на русском языке, то посмотри это курс https://shultais.education/courses/algo там всё довольно просто, со схемами, графиками и анимацией. Правда на Питоне, а не на C++, но в случае алгоритмов разницы особой нет. Из книг можно посмотреть Рода Стивенса и Кормена - хорошие авторы. Вообще даже если учиться на курсе, книга всё-равно нужна.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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