Я занимаюсь быдлокодвебмакакингом, очевиджно же, что в этой сфере алгоритмы используются крайне редко, потому что задачи иные, куда важнее паттерны проектирования и нагрузки, которые код создает, безопасность. Конечно, нагрузки во многом зависят от алгоритмов, но только тогда, когда нужны вычисления или отсортировка, поэтому хочется, чтобы это было производительно. Конечно же некоторые базовые знания есть и про сортировку пузырьком, к примеру, я в курсе. Иногда, разумеется, включается логика и быстрый и хороший вариант можно придумать и написать самому. Однако, какие-то фундаментальные знания иметь хотелось бы. Недавно тест проходил с вопросами "какой тип дерева на рисунке", что такое деревья я знаю, но определения их типов - нет. Есть ли что-то небольшое, для ознакомления со всем этим, но безх фанатизма? Трехтомники читать не очень хотелось бы, но выходные почитать основы - мне бы хватило более чем.
чтоб фундаментальные знания получить, нужно не только одно желание, но и усердный труд, где одним трёхтомником тут не отделаться.
с таким подходом не советую даже на изучение тратить время.
Есть ли что-то небольшое, для ознакомления со всем этим, но безх фанатизма?
Есть. Всем известный Кормен написал еще Алгоритмы. Вводный курс.
Базовые алгоритмы (сортировка, поиск, графы, строки, криптография, сжатие), псевдокод, неформальный стиль, чуть более двухсот страниц. Проще для въезжания/ознакомления не встречал.
Поддерживаю идею насчёт курсов на Курсере (но только если английский более-менее на слух воспринимаете, субтитры там очень неточные). Курсы Algorithms I / Algorithms II Принстонского университета (ведёт сам Седжвик), и курсы Design of Algorithms I / Design of Algorithms II Стэнфордского университета. Во-первых, ограничения по времени и необходимость не только читать/слушать, но и выполнять задания неплохо мотивирует. Во-вторых, конкретно Принстонский курс имеет просто шикарнейший авто-проверщик программистских задач, который тестирует и корректность, и расходы памяти в сравнении с эталонным решением, и эффективность по времени (опять же в сравнении с эталонным решением). Советую пройти оба курса, Принстонский более ориентирован на кодирование (Java 7), задачи там посложнее, Стэнфордский больше внимания уделяет доказательствам корректности (они помогают лучше понять некоторые алгоритмы), задачи довольно простые. По времени где-то пару часов в неделю на каждый курс, 6 недель.
Интересный вопрос. Может быть, если есть интерес общего плана, стоит посмотреть в сторону языков программирования, более ориентированных на работу с алгоритмами.
Например, С++ с его STL. В основе STL - так называемые контейнеры. Контейнер в понимании STL - это некоторый объект, который содержит другие объекты. А к этим контейнерам есть так называемые алгоритмы. Алгоритм в понимании STL - это некоторый код, который будет работать с объектами из контейнера в заданном диапазоне. То есть, одной строчкой натравливаешь нужный алгоритм на нужный контейнер и говоришь - копать от сих до сих - и все, дело в шляпе. Самые нужные алгоритмы уже заданы - та же сортировка различными способами, например. Сомневаюсь, что можно сделать ту же сортировку более надежно и эффективно, чем это сделали разработчики библиотеки. При желании можно задавать собственные алгоритмы.
Ориентация языка на работу с алгоритмами не поможет, конечно, более глубоко их понимать и создавать. Но от изобретения велосипедов убережет. И мысль в нужном направлении направит.
Если без фанатизма и на русском языке, то посмотри это курс https://shultais.education/courses/algo там всё довольно просто, со схемами, графиками и анимацией. Правда на Питоне, а не на C++, но в случае алгоритмов разницы особой нет. Из книг можно посмотреть Рода Стивенса и Кормена - хорошие авторы. Вообще даже если учиться на курсе, книга всё-равно нужна.