Всё про Алгоритмы и Структуры данных
8.85K subscribers
283 photos
30 videos
5 files
1.36K links
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников.

Ссылка: @Portal_v_IT

Сотрудничество, авторские права: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/structuredata
Download Telegram
Media is too big
VIEW IN TELEGRAM
Как посчитать сложность алгоритма по BIG O

Из этого видео вы узнаете, как рассчитать сложность алгоритма, а также как посчитать сложность своего решения, как по времени, так и по памяти.

Ссылка на видео на YouTube - https://youtube.com/watch?v=Fu4BzQNN0Qs&feature=youtu.be
ТОП-6 алгоритмов сортировки на Java для новичков

Задействование алгоритмов сортировки поможет нам упорядочить массивы Java. Для понимания: сортировка чисел от наименьшего к большему или наоборот, а также лексикографический порядок – это примеры алгоритмов сортировки, способные упорядочить Java строки и числа

↪️https://proglib.io/p/java-sorting-algorithms
11 алгоритмов машинного обучения для Data Scientist
Ещё не знакомы с динамическим программированием? Тогда мы идём к вам.

Динамическое программирование — способ решения задач через разбиение их на подзадачи, которые, в свою очередь, используются для нахождения ответа исходной задачи. Так, например, чтобы вычислить некоторое число в последовательности Фибоначчи, нужно сперва сложить предыдущие числа.

В статье простым языком разобрали несколько классических задач динамического программирования: https://tproger.ru/articles/idei-dinamicheskogo-programmirovanija-odnomernye-zadachi-chast-1/
Матрица смежности графа
Слияние двух упорядоченных списков (C ++)
Python и динамическое программирование на примере задачи о рюкзаке

Как собрать ценные вещи в поездку так, чтобы хватило места? Без избыточной терминологии рассказываем о классической задаче, решаемой методом динамического программирования.

https://proglib.io/p/python-i-dinamicheskoe-programmirovanie-na-primere-zadachi-o-ryukzake-2020-02-04
Media is too big
VIEW IN TELEGRAM
Роевой интеллект. Муравьиный алгоритм.

В ролике рассказано о "Муравьином алгоритме".
Муравьиный алгоритм - один из эффективных полиномиальных алгоритмов для решения задач поиска маршрутов на графах. Суть подхода заключается в анализе и использовании модели поведения муравьёв, ищущих пути от колонии к источнику питания, и представляет собой метаэвристическую оптимизацию.

Ссылка на видео на YouTube - https://youtu.be/8KTzAiusfPs
Топологическая сортировка

Топологическая
сортировка (Topological sort) — один из основных алгоритмов на графах, который применяется для решения множества более сложных задач.

Суть алгоритма и его реализацию можно посмотреть в статье на Хабре
This media is not supported in your browser
VIEW IN TELEGRAM
Короткое видео, в котором авторы рассказывают про алгоритм топологической сортировки

Ссылка на видео на YouTube - https://www.youtube.com/watch?v=spoelATn2UI
Алгоритмическая секция на собеседовании: на что обращать внимание?

На собеседовании вам могут дать алгоритмические задачи. Вам предстоит не только написать корректный код, но и объяснить, как он работает. При этом на решение отводится ограниченное время.

Стрессовая ситуация, не так ли? Но советы из статьи могут помочь в решении алгоритмических задач на собеседованиях:

https://habr.com/ru/company/avito/blog/662922/
​Умножение и деление сдвигом

В программировании существует специальная операция — арифметический сдвиг. Он позволяет существенно быстрее умножить или поделить число на степени двойки, чем обычные операции умножения и деления. Весь секрет — в строении двоичных чисел.

Как работает левый (<<) и правый (>>) арифметический сдвиг, хорошо объясняется в лекции:

https://youtu.be/_pLHvK-X4qg
Реализуем односвязный список на C++

У массивов в C++ есть недостаток — к существующему массиву нельзя добавить дополнительный элемент. С этой задачей справляются динамические структуры данных. Одной из них является односвязный список (теория).

За три урока вы сможете реализовать эту структуру данных на C++: часть 1, часть 2 и часть 3.
Возврат нескольких значений из функции Python

Чтобы в Python вернуть из функции сразу несколько значений, нужно воспользоваться структурами данных. Так вы можете передать из функции данные в виде списка, кортежа или словаря.

Как это сделать, объясняется в статье:

https://pythonist.ru/vozvrat-neskolkih-znachenij-iz-funkczii/
​Ищем кратчайший путь в лабиринте: объяснение на Python

Поиск пути является одной из типичных задач в программировании. Однако принципы алгоритмов поиска достаточно трудно освоить новичкам.

Понять лучше алгориты поиска пути можно на примере задачи по поиску выхода из двухмерного лабиринта. А руководство поможет разобраться с реализацией на Python популярного алгоритма поиска пути — алгоритма Дейкстры:

https://habr.com/ru/company/piter/blog/596029/
​Классические алгоритмы генерации лабиринтов

Попробуйте свои силы в генерации лабиринтов — интересном проекте, который можно реализовать на любом популярном языке программирования. Работа над проектом отточит ваши навыки кодинга, а результат пригодится, если вы соберётесь в геймдев.

Алгоритм двоичного дерева и алгоритм SideWinner: https://tprg.ru/RWAC

Алгоритм Олдоса-Бродера и алгоритм Уилсона: https://tprg.ru/IneP
Ищем повторяющиеся элементы в массиве

Предположим, вам нужно найти дубликат элемента в массиве. Как бы вы решили эту проблему?

Сначала подумайте, а затем загляните в статью, чтобы узнать о различных способах решения: https://nuancesprog.ru/p/2340/
Двоичное (бинарное) дерево поиска

Структуры данных «деревья» широко распространены в программировании, например каталог проекта или DOM-дерево в веб-разработке.

Среди них особенно выделяется двоичное дерево поиска, которое позволяет существенно ускорить поиск элементов.

Подробнее о структуре двоичного дерева и его реализации в коде:

https://tproger.ru/translations/binary-search-tree-for-beginners/
​Структура данных «очередь» (queue) — принципы работы

С понятием очереди вы наверняка хорошо знакомы. В программировании она используется для обработки данных, запросов и событий в том порядке, в котором они попали в очередь.

Подробнее об этой структуре данных поясняется в ролике: https://youtu.be/fmHyFTji-Lc