Очередь с приоритетом | Кольцевая очередь | Динамические структуры данных #6
Вставка
- Опубліковано 24 вер 2024
- Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)
Очередь как структура данных. Прошлый урок.
goo.gl/ojk1Y3
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Если вам нравятся мои уроки, вы хотите поддержать меня и развитие канала, то можете сделать это тут!=)
🔴🔴🔴 www.donationale...
или тут
🔴🔴🔴 / simplecode
✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅
Уроки по программированию
Наша группа ВК smplcode
Подписывайтесь на канал / @simplecodeit
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
Наверное уже поздно задавать вопросы по этой теме, но всё же:
Ты говорил, что нельзя работать с данными внутри очереди, однако тут ты демонстрируешь, как просто берёшь и исключаешь данные из середины очереди, вставляешь туда новые данные. Я не понял этого момента, можешь объяснить?
Макс Шехунов возможно имелось ввиду, что сами данные (узлы) лучше не менять, а очередь модифицировать можно. Кстати, почему всё-таки узлы нельзя менять для меня вопрос. Например, если список хранит информацию о процессе и какой-то процесс завершает работу в отведенное ему время, но задачу он не решил, то информация о процессе сохраняется в узел. Вот и происходит модификация, ведь мы старые данные о процессе перезаписываем новыми. А потом этот процесс опять отправляется на выполнение, но теперь он полностью завершает работу и просит ОС завершить данный процесс. И одно из действий по завершению процесса будет удаление его из данной очереди выполняющихся процессов. Вот и модификация самой очереди. Может быть он оговорился, что нельзя модифицировать очередь?
#очередьсприоритетом #кольцеваяочередь #SimpleCode #урокипрограммирования
Пробел после шарпа убери, а то хештег не засчитает, миллиарды зрителей и не узнают о тебе))
СПАСИБО ЗА ТРУД!!! ♥♥♥
Понятно и наглядно - как обычно. Спасибо за урок, Сергей. Очень хотелось бы послушать и посмотреть о dll. Что как и откуда.
Сергей, спасибо Вам за Ваши уроки, досматриваю плейлист "на одном дыхании"! Но позволю себе немного отрицательной обратной связи. В предыдущем видео Вы рассказали, что очередь строится на основе двусвязного списка потому что используются достоинства последнего и "не выстреливают" недостатки. А в этом, внезапно, говорите про упорядочивание элементов в очереди, т.е. двусвязном списке. После просмотра не сформировалось целостной картины. Предполагаю, что решается несколькими очередями (на иллюстрации одна). С уважением!
Спасибо!
Вообще интересно какая реализация очереди с приоритетом наиболее трудоспособная. Я думаю о N-нарном дереве с кольцевой очередью, для каждого приоритета.
Очередь с приоритетом с предварительной сортировкой, конечно же, лучше, т.к. быстрее. При этом начинать поиск последнего элемента с наивысшим приоритетом лучше начиная с начала.
Почему быстрее? Просто в разных местах проверка происходит.
Спасибо за урок.
Сама логика понятна , но только не понятно зачем я это узнал 0.0 Спасибо за урок)
А зачем ты это смотрел?🤔
при выпуске элементов на приоритетном исключении надо бы иметь счетчик вхождения по приоритетам, ведь мы ищем по приоритету M но не знаем сколько еще элементов в N их множестве
если счетчика нет, то придется доходить до конца очереди постоянно
Спасибо за урок
Пожалуйста!
Спасибо за видео, не слышал про такую структуру данных (кольцевая очередь с приоритетом). Однако разве не проще иметь N обычных очередей, где N - количество приоритетов. У очереди с приоритетом есть один минус, как мне кажется. Если в очереди есть только элементы с минимальным приоритетом, то нужно сначала пройтись от начала и до конца списка, пытаясь найти элементы с приоритетом 1. Затем опять пройтись сначала, пытаясь найти элементы 2 и только потом обработан мы самый первый элемент списка, так как кроме 3-его приоритета нет ничего. Можно конечно во время прохода пересчитать количество элементов с разными приоритетами. И если нет элементов с 2-ым, то сразу выполнять 3-ий. Однако мне кажется, что это сильно усложняет алгоритм обработки элементов данной структуры. 3 очереди, где в каждой элементы своего приоритета выглядят намного проще.
Но почему бы вам не завести счетчики элементов для каждого приоритета и исходя из их текущих значений принимать решение о поиске
Андрей Кузнецов эту информацию нужно ведь где-то хранить. Допустим, что мы будем хранить эту информацию в структуре. Исходя из того, что очередь вся состоит из одного типа Node, где переменная-указатель хранит адрес другого такого Node, то хранить эту информацию в самой структуре не имеет смысла, так как будет дублирование информации. Получается, что нужна какая-то дополнительная структура PriorityQueue которая будет иметь поля дополнительной информации и собственно сам список. В принципе данные будут собраны в одном месте и логика тоже. Возможно это дело вкуса. В каких-то задачах лучше все данные хранить в одном таком списке, а в каких-то в разных.
Ну если проводить аналогию с реализацией односвязного списка, мы хранили количество элементов Size в самом классе List, Node у нас был приватным классом в классе List, соответственно (проводя аналогию с односвязным списком) мы заводим дополнительно 3 поля класса List priority1, priority2 и priority3 и там храним количество элементов каждого приоритета ну и при поиске смотрим в эти поля и определяемся где нам надо искать (если допустим priority1 = 0, priority2 = 0 то можно сразу начинать с 3 приоритета не тратя время на остальное)
Спасибо за старания!
Сергей подскажите пожалуйста, получается в кольцевой очереди у нас всегда строго определенное количество элементов? или мы все же можем вставлять туда элементы? если да, то куда? ну и соответственно наверное удалять их не имеет смысла.
Krasavchik
Большое спасибо )
Спасибо Сергей !
Шикарные уроки! Жаль, что мало( мне си не нужно, а вот такие общин вещи очень интересны
спасибо за интересные доп уроки)
Всё понятно!
Спасибо
так в предыдущем уроке говорилось,что очередь предполагает доступ к первому и последнему элементу только,как можно выбрать элемент из середины?
Это абстракция для программиста видимо. Так как внутри двусвязный список, то можно
Видео зачет, очень помогло)
Не является ли бинарная куча лучшим подходом, чем эти которые вы упомянули?
Зеленые - инвалиды, синие - беременные, красные - обычные люди :)
зеленые чисто за сижками пришли
Привет, ты говорил что проще изучать программирование делая какой-то проект, можешь ли ты привести примеры таких проектов и посоветовать сборники задач для изучения программирования.
Павел Костюченко собственно проект может абсолютно каким угодно. Хоть тетрис, хоть домашний менеджер файлов, напоминалка, архиватор, программа по выкачиванию фильмов, да хоть ОС какая-нибудь. Проект может быть каким угодно, главное чтобы он был интересен разработчику.
при просмотре сразу возникает вопрос к реализацие, почему не сделать 3(количество уровней приоретета) очереди в одном классе, и работать с ними как с обычными, сортируя перед добавлением, и добавляя в нужную очередь, и доставать по логике если пустой то проверять следующий уровень на пустоту и доставать, если пустой то идти дальше
по сути это вектор/просто массив(смотря от задачи, но скорее всего количество уровней приоретета или не будет или очень редко будет меняться) из очередей только ограниченный для пользователя, мне кажется это может быть проще в реализауии, и более эффективно в работе?
Получается, нам нужно перебрать все элементы очереди, чтобы узнать, что элементов с более высоким приоритетом не осталось? То есть пройтись по всей очереди, убедиться, что элементы с приоритетом 1 закончились, только тогда можно браться за элементы с приоритетом - 2.
получается так)
То есть по сути есть 3 очереди, каждая из которых по приоритету стоит в одной большой очереди? Сначала очередь с элементами "1", потом "2" и т.д.
А как правильно удалять visual studio и его надо скачивать только на диск С?
а будут видео по STL???)
+Alex Shyshkov будут
Дякую!
схемы конечно понятные, но хорошо было бы и на код посмотреть. как задавать этот приоритет например
Добрый день. Не могли бы подсказать? Реализация данной структуры данных на примере библиотеки из C# or Java?
Like!
Здравствуйте. У меня один вопрос возник, никак не могу найти ответ, можете помочь?
Если у нас есть например односвязный циклический список, то как мы можем узнать первый и последний эелементы, если скажем получили доступ с середины списка ?
Не могу найти ответ, а сам не понимаю ка сделать. Ведь последний элемент будет всегда указывать на первый. Могу определить только цикличен ли список или нет, а вот найти первый и последний не понимаю как
буду очень благодарен за помощь
Не очень понял, что вы хотите, я думаю надо создать два указателя, на первый и последний элементы
7:30
1 это Бабка 2 это Я только спрошу 3 это Злой Я XD
мне одному показалось что голос Сергея похож на голос ValeraGhost который обзоры игр делает?
топпппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппппп
+
я не знал, что
в фотошопе есть Line Tool.
Музыка на заднем плане (хоть и хорошая) очень сильно отвлекает
Иди нах.уй единственное хорошее что есть в его видео музыка
кто эти люди которые ставят дизлайки?
Австралийцы, они так лайки ставят просто
спасибо
спасибо