Поделитесь мнением о нашем сайте Помогите нам стать лучше и получите подарки! Подробнее Подпишитесь на нас в 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