powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Куча [Python]
9 сообщений из 9, страница 1 из 1
Куча [Python]
    #39104160
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Подскажите, пожалуйста, как можно организовать работу с кучей
Добавление элемента (O(log n))\ извлечение max элемента (верхушки кучи) (O(n)) ?

В результате добавления происходит автобалансировка кучи ?

Заранее спасибо
...
Рейтинг: 0 / 0
Куча [Python]
    #39104213
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав Клевцов,

чем не нравится встроенный тип dict?
...
Рейтинг: 0 / 0
Куча [Python]
    #39104532
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHookСтанислав Клевцов,

чем не нравится встроенный тип dict?

океу.
За сколько O-большое можно добавить новый элемент в нужное место в dict ? (Думаю это O(n) 1 проход по всему dict + операция вставки О(1) или я не прав ?
...
Рейтинг: 0 / 0
Куча [Python]
    #39104560
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHookСтанислав Клевцов,

чем не нравится встроенный тип dict?

Вот еще немного теории

автор
"Если реализовать такую структуру на базе списка, то добавлять элементы можно в конец списка за O(1). Но поиск наибольшего элемента будет занимать O(n), если n - число элементов в списке, так как придется просматривать все элементы списка и выбирать из них наибольший.

Если же хранить элементы в списке упорядочив их по неубыванию, то извлечение наибольшего будет занимать O(1), но добавление элемента в список - O(n), так как придется сдвигать элементы, уже находящиеся в списке.

Специальная структура данных «Куча» (англ. heap) позволяет эти операции выполнять за O(log n)."
...
Рейтинг: 0 / 0
Куча [Python]
    #39104931
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав Клевцовможно добавить новый элемент в нужное место в dict ?
dict - это хэш таблица, у неё нет позиции элемента.
...
Рейтинг: 0 / 0
Куча [Python]
    #39104989
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHookСтанислав Клевцовможно добавить новый элемент в нужное место в dict ?
dict - это хэш таблица, у неё нет позиции элемента.

Сорри, тогда как искать максимальный элемент в "словаре"?
...
Рейтинг: 0 / 0
Куча [Python]
    #39105137
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHookСтанислав Клевцовможно добавить новый элемент в нужное место в dict ?
dict - это хэш таблица, у неё нет позиции элемента.

"Меньше вопросов, больше дела" Сам разобрался с задачей и решил её с помощью кучи
(где поиск макс\мин элемента за O(1),а также его удаление за O(1). Добавление новых элементов за O(log n)

А что касается dict, то поиск за O(1), но тупняки на добавлении и удалении элемента O(n).

Можно подвести итог. Для решения моей задчи dict не подходит, т.к. кушает много памяти на n-> 10^6 и не проходит по тестам системы.

Всем спасибо. Тема закрыта !
...
Рейтинг: 0 / 0
Куча [Python]
    #39105142
Фотография FishHook
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав КлевцовСам разобрался с задачей и решил её с помощью кучи
И где ты в питоне взял кучу?
...
Рейтинг: 0 / 0
Куча [Python]
    #39105943
Фотография Станислав Клевцов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FishHook, библиотека "heapq"

Хеш-таблица требует предварительной инициализации ячеек значениями NULL
- трудоемкость O(h)

Код: python
1.
2.
3.
4.
5.
6.
7.
Поправка вычислительной сложности (ВС) :
Операция      Средняя ВС    Худшая ВС
Add(key,value)  О(1)       О(1)
Lookup(key)     О(1+n\h)   O(n)
Delete(key)     O(1+n\h)   O(n)
Min()           O(n+h)     O(n+h)
Max()           O(n+h)     O(n+h)



Пример :
Код: python
1.
2.
3.
4.
import heapq

h=[]
heapq._heapify_max(h)  - делает из списка кучу за линейное время
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Куча [Python]
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]