Data Science: Алгоритмы и Структуры данных
Відкрити в Telegram
Мы не претендуем на оригинальность контента, мы лишь собираем материал из открытых источников. Ссылка: @Portal_v_IT Сотрудничество: @oleginc Канал на бирже: https://telega.in/c/structuredata
Показати більше7 575
Підписники
-324 години
-197 днів
-6630 днів
Архів дописів
Основные операции над очередью
Операции над очередями включают в себя инициализацию или определение очереди, ее использоание, а также полное удаление.
Основные операции:
1. enqueue() - добавить(сохранить) элемент в очередь
2. dequeue() - удалить элемент из очереди и дать к нему доступ
3. peek - получит элемент в начале очереди без его удаления (очень похоже на стек функцию)
3. isEmpty() - проверяет пуста ли очередь
4. isFull() - проверяет заполнена ли очередь
Как вы можете заметить функции очень похоже на то, что было у стека.
class Python - интерактивный канал-учебник по Python.
Очень просто, Флэтчер, как и все остальное. Практика.
➖ Возможность запускать код с любого устройства прямо в канале
➖ Алгоритмы, фишки языка, книги и статьи
➖ Задачи разных уровней сложности и их автоматическая проверка
Присоединяйся: @class_python
Структура данных: Очередь
Рядом со структурой данных стек, всегда идет и очередь. Очередь - это абстрактная структура данных. В отличии от стека - очередь открыта с обоих концов. Один конец необходим для вставки данных в очередь, другой для их удаления.
Очередь работает по правилу: "Первым пришел - первым обслужен" FIFO. То есть как тепичная очередь на почту или за какими-то документами.
Также реальным примером можно назвать к примеру пробку машин в городе. Там транспортное средство стоящее впереди (в идеальном мире), проедет быстрее своего собрата, что стоит сзади и ожидает пока проедут все впереди.
👨💻 Просто Python - первый канал, в котором действительно просто говорят о Python.
Проводи время с пользой даже в телеграм -> @prosto_python
P.S В закрепе висят ссылки на бесплатные курсы по Python
Алгоритмы Push/Pop функций в Stack
Я решил остановится более основательно на основных 2ух функциях стека, чтобы вы понимали, как под капотом они работают.
Операция Push
Алгоритм данной функции следущий:
1. Проверить заполнен ли стек
2. Если стек заполнен, выдать ошибку и завершиться
3. Если стек не заполнен, увеличиваем размер
4. Добавляем элемент в конец стека (туда куда указывает наш Head)
5. Возвращаем (если необходимо) результат о добавлении элемента
Операция Pop
У данной функции очень похожий алгоритм на push, только в обратном порядке и с целью достать элемент
1. Проверяет пустой ли стек
2. Если стек пуст, выдать ошибку и завершить процесс
3. Если стек не пуст, взять элемент на который указывает вершина.
4. Уменьшить размерность на 1
5. Вернуть сам элемент
Данные алгоритмы будет не сложно сделать как на массиве(причем во многих языках это уже реализовано, к примеру Python), так и на LinkedList, который вы реализовали до этого.
⚡️Выучить Python за месяц — реально!
Стоит начать читать канал Python Teacher. Каждый день ребята постят только нужную и полезную инфу:
– Авторские статьи, книги и пособия.
– Советы от лучших преподавателей.
– Полезные фишки и фичи языка.
Присоединяйся: @Python_Teacherr
5 классических алгоритмов машинного обучения, о которых вам обязательно следует знать
https://proglib.io/p/5-klassicheskih-algoritmov-mashinnogo-obucheniya-o-kotoryh-vam-obyazatelno-sleduet-znat-2022-08-16
Для тех кто просил, канал с мемами для программистов и айтишников👇
https://t.me/+QTlu_HRaIcJjYjcy
Основные операции над стеком
Как вы поняли выше, у стека есть две основные операции:
1. Push - поместить элемент в стек
2. Pop - достать (и удалить) элемент из стека
Но для более эффективного взаимодействия со стеком, нам необходимо еще реализовать пару функций:
1. Peek - получить верхний элемент из стэка (но его не удалять, как это делает pop)
2. isEmpty - проверить не пустой ли сейчас наш стек
3. для фиксированного размера стеков удобно использовать еще и isFull() - проверить заполнен ли стек полностью
Структура данных: Стек
Раз мы вчера затронули тему стека в решении задачи, то стоило бы рассказать: что из себя представляет данная структура данных.
Стек - абстрактный тип данных, который используется в большинстве языков программирования.
Реальный стек допускает операции только с одного конца. Например, мы помещаем или убираем тарелку(пример на посуде), только из верхней части стопки этих тарелок.
Эта особенность делает его структурой данных LIFO (последний пришел первым вышел). То есть тут элементы, которые помещены последними, доступны вам будут первыми. (push и pop операции)
Стек может быть реализован при помощи Array, LinkedList. Он может быть как фиксированного размера, так и динамически расширяться.
Есть много хороших
python-разработчиков
Этим уже не удивить, в том числе работодателя — выберут не тебя, хорошего разраба, а того, который лучший.
Как стать лучшим? Не переставай учиться. С этим поможет канал Python Universe — место, где самые прошаренные питонисты-эксперты делятся драгоценными знаниями каждый день и бесплатно.
Подпишись и убедись сам - Python Universe
Задача: Найти размерность LinkedList (Итеративно и через рекурсию)
Напишите функцию для подсчета количества узлов в заданном односвязном списке.
Например, функция должна вернуть 5 для связанного списка 1-> 3-> 1-> 2-> 1.
Итеративное решение
1. Инициализировать счетчик как count = 0
2. Инициализируйте указатель узла, current = head.
3. Выполните следующие действия, пока current не NULL
а) current = current.next
б) count++;
4. Вернуть счетчик
Рекурсивное решение
1. Если head==Null, return 0
2. Иначе возвращать:
1 + getCountRecursive(head.next)
Купить курсов на 100,000₽ или поехать отдыхать? Выбор за вами, но теперь можно и на отдых поехать и курсы проходить!
Спросите "как??" - Просто! Появился канал CourseHunter, где сливают самые популярные курсы от топовых школ совершенно бесплатно.
Успей сохранить канал, пока его не забанили:
https://t.me/+ptkDPNyH8W4zZTMy
Для тех, кто просил, кидаю ссылку на канал. Тут ежедневно сливают курсы от Skillbox, Udemy, Geek Brains и не только. Недавно, кстати, слили курс за 70,999₽, так что успей сохранить, пока канал не забанили:
https://t.me/+3Z9Nj55HgUQ4NDgy
На днях нашёл канал, который сливает самые популярные IT курсы с топовых школ. могу поделиться ссылкой, если хотите.
Отличия LinkedList от Массива
Мы с вами уже познакомились 2мя структурами данных, массив и разновидности связных списков. И массивы, и связанный список могут использоваться для хранения линейных данных схожих типов, но оба они имеют некоторые преимущества и недостатки друг перед другом.
Ключевые различия между массивом и связанным списком
1. Массив - это структура данных, которая содержит набор элементов данных аналогичного типа(не ко всем языкам программирования это применимо), в то время как связанный список рассматривается как непримитивная структура данных, содержащая набор неупорядоченных связанных элементов, известных как узлы.
2. В массиве элементы принадлежат индексам, т.е. если вы хотите попасть в четвертый элемент, вы должны записать имя переменной с ее индексом или местоположением в квадратных скобках.
В связанном списке вам нужно начинать с головы и продвигаться вперед, пока не дойдете до четвертого элемента.
3. Доступ к элементу в массиве происходит быстро, в то время как для связанного списка требуется линейное время, поэтому он немного медленнее.
4. Такие операции, как вставка и удаление в массивах, занимают много времени. С другой стороны, эти операции в связанных списках выполняются быстро.
5. Массивы имеют фиксированный размер(если мы говорим не о динамических массивах). Напротив, связанные списки динамичны и гибки и могут расширяться и уменьшаться в размере.
6. В массиве память назначается во время компиляции, а в связанном списке она выделяется во время выполнения.
7. Элементы хранятся в памяти последовательно в массивах, тогда как в связанных списках они хранятся случайным образом.
⚡️Устал шарить по интернету в поисках курсов и уроков? Всё намного проще..
На канале IT Academy каждый день публикуются курсы, видеоуроки, сервисы и другие фичи для Python, JS, Java, SQL и др.
Подписаться: @it_academy
Задача на проверку связного списка: круговой он или нет?
Достаточно простой вопрос. Как же определить является ли связный список круговым или нет. Однако по какой-то особой причине мало кто может легко ответить на данный вопрос. Соответственно я решил рассмотреть данную проблему.
Итак, вспомним все необходимые свойства. Если у нас односвязный список, то для определения является ли он закольцованным - на надо проверить последний элемент. Если он указывает на NULL соответственно это означает что список не закольцован.
Аналогичный подход для работы с и с двусвязным. Там достаточно иметь ссылку на Head вашего списка и проверить его prev ссылку. Если не пустой (не Null) значит у вас закольцован список
🔒Алгоритмы Data Science и их практическая реализация на Python
Автор: Бейдер Д.
Год: 2018
➖ Скачать
