Всё про Алгоритмы и Структуры данных
Открыть в Telegram
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество, авторские права: @oleginc, @tatiana_inc Канал на бирже: https://telega.in/c/structuredata
Больше7 757
Подписчики
+124 часа
-37 дней
-2430 день
Архив постов
Ищем повторяющиеся элементы в массиве
Предположим, вам нужно найти дубликат элемента в массиве. Как бы вы решили эту проблему?
Сначала подумайте, а затем загляните в статью, чтобы узнать о различных способах решения: https://nuancesprog.ru/p/2340/
Классические алгоритмы генерации лабиринтов
Попробуйте свои силы в генерации лабиринтов — интересном проекте, который можно реализовать на любом популярном языке программирования. Работа над проектом отточит ваши навыки кодинга, а результат пригодится, если вы соберётесь в геймдев.
Алгоритм двоичного дерева и алгоритм SideWinner: https://tprg.ru/RWAC
Алгоритм Олдоса-Бродера и алгоритм Уилсона: https://tprg.ru/IneP
Ищем кратчайший путь в лабиринте: объяснение на Python
Поиск пути является одной из типичных задач в программировании. Однако принципы алгоритмов поиска достаточно трудно освоить новичкам.
Понять лучше алгориты поиска пути можно на примере задачи по поиску выхода из двухмерного лабиринта. А руководство поможет разобраться с реализацией на Python популярного алгоритма поиска пути — алгоритма Дейкстры:
https://habr.com/ru/company/piter/blog/596029/
Возврат нескольких значений из функции Python
Чтобы в Python вернуть из функции сразу несколько значений, нужно воспользоваться структурами данных. Так вы можете передать из функции данные в виде списка, кортежа или словаря.
Как это сделать, объясняется в статье:
https://pythonist.ru/vozvrat-neskolkih-znachenij-iz-funkczii/
Реализуем односвязный список на C++
У массивов в C++ есть недостаток — к существующему массиву нельзя добавить дополнительный элемент. С этой задачей справляются динамические структуры данных. Одной из них является односвязный список (теория).
За три урока вы сможете реализовать эту структуру данных на C++: часть 1, часть 2 и часть 3.
Умножение и деление сдвигом
В программировании существует специальная операция — арифметический сдвиг. Он позволяет существенно быстрее умножить или поделить число на степени двойки, чем обычные операции умножения и деления. Весь секрет — в строении двоичных чисел.
Как работает левый (<<) и правый (>>) арифметический сдвиг, хорошо объясняется в лекции:
https://youtu.be/_pLHvK-X4qg
Алгоритмическая секция на собеседовании: на что обращать внимание?
На собеседовании вам могут дать алгоритмические задачи. Вам предстоит не только написать корректный код, но и объяснить, как он работает. При этом на решение отводится ограниченное время.
Стрессовая ситуация, не так ли? Но советы из статьи могут помочь в решении алгоритмических задач на собеседованиях:
https://habr.com/ru/company/avito/blog/662922/
Короткое видео, в котором авторы рассказывают про алгоритм топологической сортировки
Ссылка на видео на YouTube - https://www.youtube.com/watch?v=spoelATn2UI
Топологическая сортировка
Топологическая сортировка (Topological sort) — один из основных алгоритмов на графах, который применяется для решения множества более сложных задач.
Суть алгоритма и его реализацию можно посмотреть в статье на Хабре
iOS теперь в телеграм!
У Apple появился официальный русскоязычный канал для разработчиков. В нем их команда бесплатно обучает мобильной разработке. Это точно лучше дорогих курсов и непонятных форумов. Будет полезно как новичку, так и опытному программисту. Стоит подписаться!
Роевой интеллект. Муравьиный алгоритм.
В ролике рассказано о "Муравьином алгоритме".
Муравьиный алгоритм - один из эффективных полиномиальных алгоритмов для решения задач поиска маршрутов на графах. Суть подхода заключается в анализе и использовании модели поведения муравьёв, ищущих пути от колонии к источнику питания, и представляет собой метаэвристическую оптимизацию.
Ссылка на видео на YouTube - https://youtu.be/8KTzAiusfPs
Python и динамическое программирование на примере задачи о рюкзаке
Как собрать ценные вещи в поездку так, чтобы хватило места? Без избыточной терминологии рассказываем о классической задаче, решаемой методом динамического программирования.
https://proglib.io/p/python-i-dinamicheskoe-programmirovanie-na-primere-zadachi-o-ryukzake-2020-02-04
Ещё не знакомы с динамическим программированием? Тогда мы идём к вам.
Динамическое программирование — способ решения задач через разбиение их на подзадачи, которые, в свою очередь, используются для нахождения ответа исходной задачи. Так, например, чтобы вычислить некоторое число в последовательности Фибоначчи, нужно сперва сложить предыдущие числа.
В статье простым языком разобрали несколько классических задач динамического программирования: https://tproger.ru/articles/idei-dinamicheskogo-programmirovanija-odnomernye-zadachi-chast-1/
Рецензия на книгу "Грокаем алгоритмы. Иллюстрированное пособие для программистов и любопытствующих"
https://habr.com/ru/post/664360/
ТОП-6 алгоритмов сортировки на Java для новичков
Задействование алгоритмов сортировки поможет нам упорядочить массивы Java. Для понимания: сортировка чисел от наименьшего к большему или наоборот, а также лексикографический порядок – это примеры алгоритмов сортировки, способные упорядочить Java строки и числа
↪️https://proglib.io/p/java-sorting-algorithms
Микросервис или монолит: выбираем архитектуру под задачу.
На бесплатном вебинаре Яндекс Практикума будем разбираться, когда стоит смотреть в сторону монолита, а когда — в микросервис.
→ 25 января в 19:00
Вебинар будут вести четверо опытных программистов:
◾️ Дмитрий Шеламов, старший разработчик в Delivery Hero;
◾️ Алексей Мясников, старший разработчик в Яндекс Облаке, на проекте YDB;
◾️ Олег Кожанов, старший Technical Program Manager в Amazon;
◾️ Владислав Шевченко, руководитель бэкенд-практики на Go/Python в red_mad_robot.
Они расскажут о своих кейсах: какой подход работал в системе сбора онлайн-чеков от ККТ, как создавать МС без опыта и распиливать монолитный бэкенд в наземной станции управления квадрокоптерами.
На вебинаре
— рассмотрим отличия микросервисной архитектуры и монолита;
— обсудим плюсы и минусы подходов;
— разберём, под какие задачи подходит каждый из них;
— расскажем про проблемы масштабирования: как запланировать и с чего начать миграцию.
→ Приходите на вебинар и выбирайте подход мудро
Как посчитать сложность алгоритма по BIG O
Из этого видео вы узнаете, как рассчитать сложность алгоритма, а также как посчитать сложность своего решения, как по времени, так и по памяти.
Ссылка на видео на YouTube - https://youtube.com/watch?v=Fu4BzQNN0Qs&feature=youtu.be
Нейросеть ChatGPT теперь в telegram. Ребята из XOR выкатили бота для программистов, отвечающего на любые вопросы лучше гугла🤖
Бот в закрепе: @XOR_Journal
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
