Всё про Алгоритмы и Структуры данных
Open in Telegram
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество, авторские права: @oleginc, @tatiana_inc Канал на бирже: https://telega.in/c/structuredata
Show more7 756
Subscribers
-124 hours
-37 days
-2530 days
Posts Archive
🐍 Быстрая сортировка
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, которые по-разному выбирают точку опоры.Разновидности массивов
Понятное дело, что есть и определенные разновидности массивов. В частности основными типами являются:
1. Одномерные
2. Многомерные
Тут все просто, одномерные массивы - это те что представлены выше на картинке.
Многомерные же, массивы в которых вложены другие массивы.
Но есть и другая типизация:
1. Статические массивы
2. Динамические массивы
Тут тоже никаких сложностей.
Статический массив - массив у которого заранее предопределен его размер. Основные сложности в использовании, тесно связаны с этим ограничением. Так как если вы захотите добавить что-то сверх, вам придется создавать новый массив и перекладывать из старого все значения.
Динамический массив - массив у которого динамический размер. Тут проще с использованием, однако есть и свои особенности. В частности как выделять память для такого массива. Не всегда же увеличивать ее в 2 раза, было бы очень глупой потерей памяти.
Хранение динамического массива в памяти
Под массив всегда выделяется фрагмент в памяти RAM, размер этой памяти всегда больше требуемого. Дается такому выделению имя - емкость массива. Текущая длина хранится в отдельном счетчике. Она естественным образом нужна для того чтобы определить размер, но также и для того чтобы следить за границей массива.
Команда увеличения размера массива - если емкость не превышена, просто измнит счетчик длины массива до нужного размера.
Команда увеличения размера сделает следующее:
1. Выделит новый фрагмент в RAM, размер которого превышает размер массива
2. содержимое массива скопирует в эту выделенную память
3. Размер и емкость массива обнулит
4. В служебной стрктуре, где хранятся указатели - изменит их
5. Запустит высвобождение памяти, которая ранее использовалась для массива
Структура данных: массивы
Массив (список) - набор элементов, которые хранятся непрерывно в памяти. Что означает непрерывно? Это означает, что в памяти данная структура хранится ячейка за ячейкой.
Основная идея массивов состоит в том, чтобы хранить несколько различных элементов в одном месте.
Основным плюсом будет то, что очень просто вычислить положение каждого элемента. Потому что каждый последующий добавленный элемент будет добавлять смещение к базовому элементу. Если быть более точным, то смещение будет в памяти.
Изображение показывает, что каждый элемент можно однозначно идентифицировать по их индексу в массиве (аналогично тому, как вы можете идентифицировать список ваших любимых вещей в порядке важности).
Почему ИИ так актуален в банковской сфере?
Узнай на лекции от Газпромбанка уже 25 августа
Подробнее о лекции:
Где: в Zoom
Во сколько: в 18:00 (по МСК)
Спикер: Адель Валиуллин, начальник отдела искусственного интеллекта Газпромбанка
Что узнаем: почему искусственный интеллект (AI) сегодня так актуален, в каких сферах применяется, какие задачи решаются в банке на основе AI и, конечно, что нужно знать для построения карьеры в data science и AI
Встречаемся 25 августа, регистрируйся по ссылке - https://vk.cc/cfSGEf
Структуры данных в JavaScript.
В видео автор расскажет про то, какие структуры данных встроены в JavaScript и покажет как создать собственную структуру данных ArrayList
https://youtu.be/dFwNSyVC_5Y
Найти работу в айти можно 2 методами:
Первый. Бесконечно скроллить HeadHunter и пытаться что-то выклевать на LinkedIN. Офигеть от условий и закрыть.
Второй. Подписаться на JavaJob. Это база адекватных предложений, где даже для новичков много мест с хорошей з/п.
Тут найдете работу как в Яндексе (именно сюда крупняки присылают вакансии напрямую), так и в молодых стартапах!
В общем, не теряйте времени и находите работу в 2 клика: @Job_javadevs
В сеть слили ссылки на 3 топовых канала! Успей, пока не сменили:
• Бесплатные авторские видеоуроки и курсы — IT-EX | Уроки программирования
• Крупнейший справочник для сисадминов — Кладовка Сисадмина
• Самая топовая IT-литература — Просто IT книги
Подпишись, и получай порцию годного контента каждый день!
💻 Основные структуры данных
Из видео вы узнаете про самые используемые структуры данных: статический, динамический и ассоциативный (HashTable) массив.
Видео довольно трудное для новичков, поэтому переходите к просмотру только в том случае, если вы знаете про hash-функции и сложность алгоритмов. А ещё автор говорит очень быстро, поэтому советуем немного размять мозги, чтобы всё освоить
https://www.youtube.com/watch?v=K4sYJHuNgmE
Для тех кто просил, тот самый канал с товарами для программистов👇
https://t.me/+gBSUKGRDhF1lYzMy
Скинуть вам годный канал с подборкой товаров для программистов?
Структура данных - круговой связанный список
Продолжаем тему связных списков и на очереди сегодня круговой!
Круговой связанный список — это вариант связанного списка, в котором первый элемент указывает на последний элемент, а последний элемент указывает на первый элемент. Как односвязный список, так и двусвязный список можно превратить в круговой связанный список.
Стоит отметить, что в двусвязном списке следующий указатель последнего узла указывает на первый узел, а предыдущий указатель первого узла указывает на последний узел, делающий круговую в обоих направлениях.
Основные операции:
- display - отображение всего списка
- insert - вставка элемента в список
- delete(remove) - удаление узла из списка по ключу
Станьте Python-разработчиком с нуля и реализуйте 7 проектов для портфолио, а мы поможем с трудоустройством!
Python легко изучать новичкам, а спрос на специалистов в несколько раз превышает предложение. В прошлом году HeadHunter признал Python-разработчиков самыми востребованными в IT-сфере.
В программе минимум 70% вебинаров. Вы сможете задать вопросы, получить обратную связь и персональную помощь по своим проектам от экспертов.
Обучение строится на взаимодействии с командой: наставниками, преподавателями и студентами. Навык работы с людьми — один из самых необходимых в работе разработчика.
В зависимости от ваших целей и амбиций выберите комбинированное предложение по обучению. Длительность программы, учебный план и набор технологий зависят от пакетов.
Переходите по ссылке, чтобы узнать подробнее о курсе и программе обучения: https://clck.ru/sbWQr
А ещё, дарим подарки всем студентам:
— Изучение английского языка с Kespa: 3 месяца к Premium подписке;
— Ключ от продуктов JetBrains! Бесплатная подписка;
— Защитное решение «Лаборатории Касперского»! Пробная версия на 3 месяца.
Алгоритмы сортировки: зачем они нужны?
Работая с большим массивом данных, с помощью сортировки можно разместить элемент заданного массива в некотором определённом порядке. Например, в интернет-магазине вы можете отсортировать товар по цене, популярности или категории.
Одни алгоритмы помогают сортировать объекты с учётом вводных данных, другие — найти элемент быстрее.
Подробнее здесь:
https://tproger.ru/articles/zachem-nuzhny-algoritmy-sortirovki/
#алгоритмы
#️⃣ Хэш-таблицы
На этом держатся словари и множества. Знать, как работают хэш-таблицы — не обязательно, но желательно, особенно если вы занимаетесь оптимизацией.
Автор за 10 минут рассказывает, что такое хэш, зачем нужна хэш-функция (и какую лучше выбрать) и как работают сами хэш-таблицы.
https://youtu.be/0UX4MIfOMEs
Как превратить простую задачу в качественное обучение и сделать так, чтобы разработчики ждали дежурства так же, как отпуска?
Автор лучшего доклада конференции Highload++ Ян Ашенкампф рассказывает, как Газпромбанк выстраивал работу в командах разработки.
О том, что помогло повысить эффективность команды, и почему такой метод подходит не всем, читайте в статье на GPB Spacе > https://vk.cc/cfOxuD
⚡️ Яндекс запустили проект "Программирование в массы" и решили бесплатно обучать Python'у всех желающих
В рамках этого проекта был создан канал Python Guru. Тут собраны лучшие образовательные материалы для изучения пайтона.
Видеоуроки, бесплатные курсы, книги, статьи, тесты, шпаргалки и многое другое для комфортного изучения языка в одном месте, сохраняй чтобы не потерять
☕️ Распространенные алгоритмы и структуры данных в JavaScript: полезные алгоритмы для веб-разработки
Не факт, что веб-разработчику мультипликаторов делать самому, возможно, пузырьковую сортировку, но о часто задаваемых вопросах на собеседованиях. К тому же знание большинства подходов к решению задач позволяет писать более качественный код.
https://proglib.io/p/rasprostranennye-algoritmy-i-struktury-dannyh-v-javascript-osnovnye-ponyatiya-i-rabota-s-massivami-2021-10-06
⚡️ Яндекс запустили проект "Программирование в массы" и решили бесплатно обучать Python'у всех желающих
В рамках этого проекта был создан канал Python Guru. Тут собраны лучшие образовательные материалы для изучения пайтона.
Видеоуроки, бесплатные курсы, книги, статьи, тесты, шпаргалки и многое другое для комфортного изучения языка в одном месте, сохраняй чтобы не потерять
⚡️Спорим, что можно выучить Python за месяц?
Не веришь? Тогда загляни на канал Python Guru и убедись в этом.
Python Guru - источник лучших материалов по пайтону: обучалки, книги, курсы, статьи, шпаргалки и многое другое для комфортного изучения языка.
Available now! Telegram Research 2025 — the year's key insights 
