Uploaded by Denis Wolf

12 алгоритмов в программировании

advertisement
Поделитесь мнением о нашем сайте
Помогите нам стать лучше и получите подарки!
Подробнее
Подпишитесь на нас в Telegram
ds_fighter
11
🔥
8
21 ноября 2022
💧
0
💩0
🙌 12 алгоритмов, которые должен знать каждый разработчик:
объясняем на гифках
Алгоритмы давно заняли особую нишу как в Computer Science, так и в разработке ПО. Однако
какую роль они играют в жизни разработчика и что конкретно из них следует изучить и знать? Об
этом вы узнаете из нашей статьи.
3
17
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
Согласен
Сейчас среди начинающих разработчиков распространено заблуждение, что зазубривание
стандартных алгоритмов имеет важное значение. Для прохождения собеседования на некоторые
вакансии это действительно так, но в повседневной деятельности оно не особо важно для того,
чтобы быть успешным разработчиком.
Так неужели знания в области алгоритмов бесполезны? Конечно, нет. Что по-настоящему важно,
так это умение думать алгоритмически. Не только чтобы воспроизводить и изменять стандартные
алгоритмы, но и чтобы вам было комфортно использовать код для решения задач, с которыми вы
столкнетесь в роли разработчика.
Поэтому мы собрали 12 алгоритмов, которые должен проработать начинающий разработчик,
чтобы развивать и применять алгоритмическое мышление.
Бинарный поиск
Бинарный поиск – это одна из первых вещей, с которыми сталкиваются в начале изучения
computer science. Это возможно самый простой пример того, как немного изобретательности
может сделать решения, в буквальном смысле, экспоненциально более эффективными.
Его суть в том, что нам дан отсортированный массив. Необходимо итеративно делить его
пополам, брать значение в середине и сравнивать его с элементом, который хотим найти: если он
больше – ищем в правой половине, если меньше – в левой. И так до тех пор, пока элемент не
будет найден.
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
Бинарный поиск. Источник: brilliant.org
Сортировки пузырьком, выбором, вставками
Алгоритмы сортировки – один из фундаментальных инструментов, которые разработчик должен
иметь в своем арсенале. Квадратичные сортировки (пузырьком, выбором, вставками) – первое,
что следует проработать начинающему разработчику. В случае когда скорость имеет значение, вы
вряд ли будете их использовать, но работа с ними является хорошим введением в работу с
массивами.
Сортировки пузырьком. Источник: Wikipedia
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
Сортировка выбором. Источник: Codepumpkin.com
Сортировка вставками. Источник: Studiousguy.com
Быстрая сортировка и сортировка слиянием
Как было сказано выше, алгоритмы сортировки отлично подходят, чтобы научиться чувствовать
себя комфортно при работе с массивами, но быстрая сортировка и сортировка слиянием
достаточно эффективны, чтобы использоваться в реальных приложениях. Умение с легкостью
реализовывать их (Заметьте: «с легкостью реализовывать», а не зазубривать) необходимо
каждому продвинутому разработчику.
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь
сайтом, Источник:
вы даетеWikipedia
свое согласие с условиями пользования cookie
Быстрая сортировка.
Сортировка слиянием. Источник: Wikipedia
Кодирование Хаффмена
Кодирование Хаффмена – это основа современного сжатия текстов. Суть его заключается в
анализе частотности появления символов в тексте и построения на его основе дерева из этих
символов.
Уделение времени разбору как работает кодирование Хаффмана – это хороший способ освоиться
в работе с представлением данных и обходом деревьев, что является двумя наиболее важными
проблемными вопросами, с которыми приходится сталкиваться специалистам по Computer
Science.
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь
вы Источник:
даете свое
согласие с условиями пользования cookie
Кодированиесайтом,
Хаффмена.
Wikipedia
Поиск в ширину
Деревья лежат в основе множества алгоритмов и программ, с которыми имеет дело разработчик.
Поэтому базовое понимание идеи обхода деревьев – один из наивысших приоритетов для
начинающего разработчика.
В поиске в ширину мы исследуем дерево уровень за уровнем, и так до тех пор, пока не найдем
искомый узел. Прохождение через каждый уровень гарантирует нахождение решения.
Поиск в ширину. Источник: Wikipedia
Поиск в глубину
Поиск в глубину является вторым основным подходом нахождения элемента в дереве. Вместо
обхода дерева поуровнево, он исследует дерево ветка за веткой.
При отсутствии у дерева не бесконечно распространяющихся ветвей, поиск в глубину также будет
работать безотказно. Реализация этих двух алгоритмов не очень сложна, но важно понимать,
когда использовать один алгоритм, а когда другой. При создании архитектуры программы
огромное значение имеет понимание структуры информации, с которой вы работаете, и выбор
оптимального для нее алгоритма.
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
Поиск в глубину. Источник: Wikipedia
Градиентный спуск
Для большинства разработчиков этот алгоритм не имеет широкого применения. Однако в случаях
регрессии или машинного обучения он становится фундаментом для всей вашей работы.
Градиентный спуск – это способ оптимизации функций, основанный на вычислениях. В контексте
машинного обучения или регрессии это значит нахождение значений весов алгоритма ML,
минимизирующих ошибку в предсказаниях. И хотя математически он более сложен, чем
остальные алгоритмы, при работе с данными и предсказаниями понимание его работы имеет
огромное значение.
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
Градиентный спуск. Источник: Wikipedia
Алгоритм Дейкстры
Еще одна невероятно важная задача, с которой сталкиваются разработчики, это поиск путей.
Графы невероятно эффективны для описания всех видов задач, включающих сеть связей
отдельных объектов.
Алгоритм Дейкстры – это способ поиска кратчайшего пути между узлами в графе. Он является
базой в задачах поиска пути и находит широкое применение начиная с искусственного интеллекта
и заканчивая созданием игр.
Алгоритм Дейкстры. Источник: Wikipedia
Обмен ключами Диффи-Хеллмана
Обмен ключами Диффи-Хеллмана – это отличное введение в криптографию. Если
конкретизировать, то он работает путем объединения открытых и закрытых ключей (которые
представляют из себя очень длинные числа) для шифрования информации, передаваемой между
двумя различными сторонами.
Даже если вы не работаете в кибербезопасности, понимание криптографии и принципов
защищенной связи очень важно для работы разработчика. И хотя Диффи-Хеллман далеко не
идеален, он очень прост в реализации и похож на большинство других методов зашифрованной
связи.
Обмен ключами Диффи-Хеллмана. Источник: Gfycat
Решение практических задач
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
Первые 9 алгоритмов дали вам способы решения классических задач, с которыми вам придется
столкнуться как разработчику. Однако в реальности разработчику приходится решать
совершенно новые задачи, с которыми до этого он не сталкивался. Поэтому по-настоящему
важно не просто зазубривать алгоритмы, а развивать способность решать задачи
алгоритмически.
К счастью, есть множество веб-сайтов для практики. Вот лучшие, на наш взгляд:
leetcode.com
projecteuler.net (Более математический)
hackerrank.com
На них вы найдете трудные, но решаемые алгоритмические задачи и отточите свои навыки.
Так каков итог?
Повторимся – не стоит просто зазубривать алгоритмы и думать, что это сделает тебя лучше как
разработчика. Разработка ПО, прежде всего, заключается в умении понимать проблемы и
создавать их решения. Изучение алгоритмов важно не потому, что вам придется в точности их
имплементировать в своей работе. Оно важно, потому что учит вас находить подход к задаче.
***
Мне сложно разобраться самостоятельно, что делать?
Алгоритмы и структуры данных действительно непростая тема для самостоятельного изучения:
не у кого спросить и что-то уточнить. Поэтому мы запустили курс «Алгоритмы и структуры
данных», на котором в формате еженедельных вебинаров вы:
изучите сленг, на котором говорят все разработчики независимо от языка
программирования: язык алгоритмов и структур данных;
научитесь применять алгоритмы и структуры данных при разработке программ;
подготовитесь к техническому собеседованию и продвинутой разработке.
Курс подходит как junior, так и middle-разработчикам.
Интересно, хочу попробовать
Источники
Наш сайт использует файлы cookie для вашего максимального удобства.
https://medium.com/codesphere-cloud/10-algorithms-every-developer-should-learn-628faf0f9234
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
11
3
🔥
17
8
💧
0
💩0
Алгоритмы
Комментарии
Оставьте свой комментарий (можно использовать markdown)
Отправить
Популярные
nikesemen
По порядку
29 ноября 2022
0
0
0
0
0
0
fft: ну да, ну да
Ответить
ue faqamaza
24 ноября 2022
12 же. Куда еще 3 протеряли?
Ответить
miroslavmirm
24 ноября 2022
uefaqamaza
Сортировки пузырьком, выбором, вставками. Быстрая сортировка и сортировка слиянием
Ответить
ВАКАНСИИ
Тимлид C++
Санкт-Петербург, от 200000 RUB до 300000 RUB
О проекте
Инженер-программист junior
Наш сайт
использует файлы cookie для вашего максимального удобства.
РекламаМосква, от 110000 RUB
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
Добавить вакансию
Пользовательское
Product manager
соглашение
Екатеринбург, от 200000 RUB
Публичная
+
Показать оферта
еще
Политика конфиденциальности
Опубликовать вакансию
Контакты
ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ
Push-уведомления
10 структур
Темная темаданных, которые вы должны знать (+видео и
задания)
FB IG
Бо Карнс – разработчик и преподаватель расскажет о наиболее часто используемых и общих
структурах
данных.
вас мы перевели
статью.обязательна.
© 2023, Proglib.
При Специально
копированиидля
материала
ссылка наего
источник
Какие алгоритмы нужно знать, чтобы стать хорошим
программистом?
Данная статья содержит не только самые распространенные алгоритмы и структуры данных, но и
более сложные вещи, о которых вы могли не знать. Читаем и узнаем!
Изучаем алгоритмы: полезные книги, веб-сайты, онлайн-курсы и
видеоматериалы
В этой подборке представлен список книг, веб-сайтов и онлайн-курсов, дающих понимание как
простых, так и продвинутых алгоритмов.
Наш сайт использует файлы cookie для вашего максимального удобства.
Пользуясь сайтом, вы даете свое согласие с условиями пользования cookie
Download