Всё про Алгоритмы и Структуры данных
Открыть в Telegram
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество, авторские права: @oleginc, @tatiana_inc Канал на бирже: https://telega.in/c/structuredata
Больше7 757
Подписчики
+124 часа
-37 дней
-2430 день
Архив постов
Будущим аналитикам данных и специалистам по DS важно дружить с математикой. Если вы чувствуете, что нужно освежить знания и восполнить пробелы — пройдите курс от Яндекс Практикума.
Он подойдёт тем, кто учится анализу данных или проходит собеседования. Поможем подготовиться ко всем каверзным вопросам и претендовать на оффер в компании, где ценят знания математики.
Курс сделан для людей: не фундаментальный вузовский учебник, но и не научпоп.
◼️ Объясняем сложное простым языком, с примерами и иллюстрациями.
◼️ Вписываем практические задачи в бизнес-кейсы.
◼️ Объясняем, как абстрактные формулы связаны с анализом данных.
◼️ Разбираем типовые задачи из собеседований.
Вы не останетесь один на один с тервером, матаном и линалом. Опытные преподаватели математики всегда на связи в чате, чтобы объяснить непонятное.
→ Оцените формат и пройдите бесплатный вводный урок: https://practicum.yandex.ru/math-for-da-ds/
Операция вращения массива
Задача: Написать функцию rotate, которая вращает массив размера n на d элементов
Способ решения 1: использование дополнительного массива
К примеру нам даны следующие параметры на входе: arr = 1, 2, 3, 4, 5, 6, 7, d = 2, n = 7
1. Первым делом мы предсохраним первые d элементов в temp массиве temp = 1, 2
2. Сделаем очищение этих элементов с начала нашего оригинального массива (к примеру при помощи shift(часто реализовано во многих языках, только называется по другому)). arr = 3, 4, 5, 6, 7, 6, 7
3. Приатачим к оригинальному массиву наш temp массив: arr = 3, 4, 5, 6, 7, 1, 2
Time Complexity: O(n)
Space Complexity: O(d)
Cпособ решения 2: вращать друг за другом
1. Сохраним arr0 во временной переменной temp
2. Переместите arr1 в arr0 с последующими поступить также и наконец добавьте в конец temp
То есть по тому же примеру у нас есть параметры: arr = 1, 2, 3, 4, 5, 6, 7, d = 2
Мы данный массив будем вращать 2 раза, первый раз получим следующий массив: 2, 3, 4, 5, 6, 7, 1
После второго же вращения получится: 3, 4, 5, 6, 7, 1, 2
Time Complexity: O(n * d)
Space Complexity: O(1)
Source Code вы можете увидеть на картинке ниже!
Но есть более интересный способ решения, который мы рассмотрим в следующий раз.
🐍 Быстрая сортировка
QuickSort — это алгоритм «разделяй и властвуй». Он выбирает элемент в качестве опорного элемента и разбивает заданный массив вокруг выбранного опорного элемента.
Реализация на Python:
def quicksort(l, r, nums):
if len(nums) == 1:
return nums
if l < r:
pi = partition (l, r, nums)
quicksort(1, pi-1, nums)
quicksort (pi+1, r, nums)
return nums
Существует много разных версий quickSort, которые по-разному выбирают точку опоры.Как понять, какая IT-профессия вам подойдёт?
Бесплатный проект «IT-рентген» от Skillfactory поможет определить подходящую профессию даже гуманитарию без багажа знаний в сфере высоких технологий.
Начните с прохождения теста: он определит, кто вы в мире IT — дата-сайентист, тестировщик, аналитик или, быть может, разработчик.
А 13 апреля обязательно приходите на онлайн-встречу, на которой расскажут о трендах в IT-сфере, о наиболее простых точках входа и ошибках новичков.
На встрече вы получите доступ к материалам, которые заменят более 100 вебинаров и сэкономят порядка 50 часов на поиске информации о профессиях и лайфхаках.
Проходите тест и узнайте, кто вы в IT
💻 Основные структуры данных
Из видео вы узнаете про самые используемые структуры данных: статический, динамический и ассоциативный (HashTable) массив.
Видео довольно трудное для новичков, поэтому переходите к просмотру только в том случае, если вы знаете про hash-функции и сложность алгоритмов. А ещё автор говорит очень быстро, поэтому советуем немного размять мозги, чтобы всё освоить
https://www.youtube.com/watch?v=K4sYJHuNgmE
Структура данных - круговой связанный список
Круговой связанный список — это вариант связанного списка, в котором первый элемент указывает на последний элемент, а последний элемент указывает на первый элемент. Как односвязный список, так и двусвязный список можно превратить в круговой связанный список.
Стоит отметить, что в двусвязном списке следующий указатель последнего узла указывает на первый узел, а предыдущий указатель первого узла указывает на последний узел, делающий круговую в обоих направлениях.
Основные операции:
- display - отображение всего списка
- insert - вставка элемента в список
- delete(remove) - удаление узла из списка по ключу
Еще учишься в вузе, но уже хочешь начать IT-карьеру? Тогда стажировка в «Лаборатории Касперского» для тебя
SafeBoard — это возможность получить поддержку при работе от экспертов компании и попробовать себя в одном или нескольких направлениях, чтобы выбрать приоритетное (всего их 20).
Например, работая над верификацией ПО, вы научитесь разбираться в теме разработки надежного ПО и архитектуры (верификация, model-checking, формальные методы и пр.) и познакомитесь с широким спектром задач с основным прицелом на TLA+: от простых по разработке визуализатора трасс до разработки спецификаций и верификации свойств программ.
Подавай заявку до 10 апреля на оплачиваемую стажировку по направлению «Верификация ПО».
Университет, специальность не имеют значения — мы оцениваем кандидатов только по итогам онлайн-тестов и собеседования. Подходят все курсы, кроме выпускного.
Условий всего 2:
● ты из Москвы или Московской области — стажировка будет проходить в московском офисе;
● ты готов уделять работе хотя бы 20 часов в неделю.
Переходи по ссылке, отправляйся в путешествие по вселенной и защищай данные в самых отдаленных мирах вместе с нашей звездной командой!
Алгоритмы сортировки: зачем они нужны?
Работая с большим массивом данных, с помощью сортировки можно разместить элемент заданного массива в некотором определённом порядке. Например, в интернет-магазине вы можете отсортировать товар по цене, популярности или категории.
Одни алгоритмы помогают сортировать объекты с учётом вводных данных, другие — найти элемент быстрее.
Подробнее здесь:
https://tproger.ru/articles/zachem-nuzhny-algoritmy-sortirovki/
IT доступно для всех! Не обязательно иметь техническое образование, чтобы работать в этой сфере. Например, профессия "Аналитик данных" идеальна для тех, кто хочет попробовать свои силы в IT, но пока не готов заниматься программированием.
За 9 месяцев обучения на курсе "Аналитик данных" от Хекслета вы научитесь:
✔️Понимать основные метрики компаний и считать их с помощью SQL и Google Sheets;
✔️Проводить когортный анализ и строить прогнозы;
✔️Визуализировать данные с помощью Looker Studio и библиотек Python;
✔️Составлять выводы на основе исследований и помогать бизнесу расти.
❗ Важно отметить, что на Хекслете вы сможете стать участником Карьерного трека.
Вы пройдете вебинары, которые охватывают все темы, связанные с трудоустройством: от составления резюме и профилей до психологических аспектов собеседований и адаптации на рабочем месте.
🆙 Наша цель - помочь вам найти первую работу в IT. Переходите по ссылке выше, чтобы попробовать обучение на нашей платформе.
#️⃣ Хэш-таблицы
На этом держатся словари и множества. Знать, как работают хэш-таблицы — не обязательно, но желательно, особенно если вы занимаетесь оптимизацией.
Автор за 10 минут рассказывает, что такое хэш, зачем нужна хэш-функция (и какую лучше выбрать) и как работают сами хэш-таблицы.
https://youtu.be/0UX4MIfOMEs
Что такое Байесовское А/B-тестирование и как его провести?
✅ Подробно обсудим 18 апреля в 20:00 мск на открытом уроке в OTUS. Занятие приурочено к старту онлайн-курса «Machine Learning. Advanced».
На вебинаре мы разберем, какие преимущества дают Байесовские A/B тесты по сравнению с обычными, как проводить Байесовские A/B тесты и как работать с Байесовскми моделями в PyMC3.
В результате урока вы:
- Познакомитесь с основами A/B тестирования
- Научитесь делать дизайн эксперимента для A/B теста
- Узнаете, как определить, что тест шел достаточно времени
- Познакомитесь с критериями принятия решения по эксперименту
- Получите новый простой и эффективный инструмент для A/B тестирования
⚠️ Урок будет полезен специалистам в области аналитики данных или аналитики продукта, а также тем, кто уже знаком с A/B тестированием, но хочет углубить свои знания.
🖌 Для участия пройдите вступительный тест
https://otus.pw/KKuSo/
☕️ Распространенные алгоритмы и структуры данных в JavaScript: полезные алгоритмы для веб-разработки
Не факт, что веб-разработчику мультипликаторов делать самому, возможно, пузырьковую сортировку, но о часто задаваемых вопросах на собеседованиях. К тому же знание большинства подходов к решению задач позволяет писать более качественный код.
https://proglib.io/p/rasprostranennye-algoritmy-i-struktury-dannyh-v-javascript-osnovnye-ponyatiya-i-rabota-s-massivami-2021-10-06
📺 5 Python алгоритмов для новичка
Рассматриваем еще 5 популярных алгоритмов в программировании!
В том числе сортировку выборкой, бинарный поиск, алгоритм Евклида и тд.
https://www.youtube.com/watch?v=7Mty2XGYD3k
Расстояние Левенштейна для чайников
https://habr.com/ru/post/676858/
Системная и бизнес-аналитика: чем занимаются специалисты этого направления в банке? Узнаешь на лекции Digital Лектория Газпромбанк.Тех.
Александр Чунаев, Head профессии по системному анализу в розничном блоке, расскажет:
— чем уникальна работа системного и бизнес-аналитика в крупной компании
— какие компетенции и навыки необходимы востребованным специалистам
— что из терминологии и инструментов аналитики является основным стеком бизнес-аналитиков
— как выглядит карьерный путь в сфере аналитики.
Когда: 7 апреля, 16:00 (по МСК)
Регистрируйся на вебинар — s.gpb.ru/m/qN0J1YDgU
И готовь вопросы спикеру: авторы трех самых интересных получат памятный приз от Газпромбанк.Тех!
Задача обедающих философов
Эта классическая задача показывает проблемы синхронизации нескольких потоков. Приведём условие:
За круглым столом сидят 5 философов. Перед каждым философом стоит тарелка спагетти, а между тарелками лежит по одной вилке (всего их 5).
В каждый момент философ может:
— поесть (ему необходимо две вилки);
— размышлять (вилки не нужны).
При этом философы не разговаривают между собой. Нужно придумать алгоритм, по которому все философы поедят, и всем хватит вилок.
Вот как можно решить эту задачу на Java (и никто из философов не умрёт от голодания)
Алгоритмы во frontend-разработке
Во фронтенд-разработке постоянно появляются новые задачи, а структура WEB-приложений усложняется. Решать эти задачи можно с помощью знания алгоритмов. В сегодняшнем видео разбираем работу frequency.counter.
https://www.youtube.com/watch?v=PbARzEFo4oM
Выбираемся из лабиринта при помощи алгоритма «поиск в ширину» (BFS) на Python
Давайте поговорим о популярном алгоритме, который называется «Поиск в ширину» (BFS). Затем реализуем этот алгоритм, чтобы найти решение для реальной задачи: как выбраться из лабиринта.
https://habr.com/ru/company/piter/blog/679020/
➕ ➕ 7 сортировок массивов по экспозиции С++ с иллюстрациями
В этой статье мы демонстрируем иллюстрацию, как работают алгоритмы сортировки: от простой пузырьковой до поисковой древовидной кучи. Также определим множественность худших и лучших случаев, а код напишем на С++.
https://proglib.io/p/7-sposobov-sortirovki-massivov-na-primere-s-s-illyustraciyami-2022-04-20
Уже доступно! Исследование Telegram 2025 — ключевые инсайты года 
