Кто-нибудь знает этот Python структура данных?

Класс Python имеет шесть требований, перечисленных ниже. Только выделение жирным шрифтом следует рассматривать как требования.


  1. Близко к O (1) производительности для такого же количества из следующих четырех операций.
  2. Поддержание отсортированного порядка при вставке объекта в контейнер.
  3. Возможность просматривать последнее значение (наибольшее значение), содержащееся в объекте.
  4. Разрешение всплывающих окон с обеих сторон ] (получение наименьшего или наибольшего значения).
  5. Возможность получить общий размер или количество хранимых объектов.
  6. Быть готовым решением , как код в Стандартная библиотека Python.

Все, что следует ниже, оставлено здесь по историческим причинам (помогите любопытным и докажите, что исследование было проведено).


После просмотра стандартной библиотеки Python (в частности, раздела о типах данных) я все еще не нашел класса, который удовлетворяет требованиям, предъявляемым к таблице фрагментации. collections.deque близок к тому, что требуется, но не поддерживает сортировку содержащихся в нем данных. Он обеспечивает:

  1. Эффективное добавление и всплывающее окно с обеих сторон двухсторонней очереди с производительностью O (1) .
  2. Извещает с обеих сторон для данных, содержащихся внутри объекта.
  3. Получение общего размера или количества объектов, содержащихся внутри.

Реализация неэффективного решения с использованием списков была бы тривиальной, но найти класс, который хорошо работает, было бы гораздо более желательным. В моделировании растущей памяти без верхнего предела такой класс может хранить индексы пустых (удаленных) ячеек и снижать уровни фрагментации. Модуль bisect может помочь:

  1. Помогает сохранять массив в отсортированном порядке при вставке новых объектов в массив.
  2. Готовое решение для хранения списков, отсортированных как объекты добавлены.
  3. Позволяет выполнить массив [-1] для просмотреть последнее значение в массиве.

Последний кандидат, который не смог полностью удовлетворить требования и появился наименее многообещающим оказался модуль heapq . Поддерживая то, что выглядело как эффективную вставку, и гарантируя, что array [0] был наименьшим значением, массив не всегда находится в полностью отсортированном состоянии. Больше ничто не помогло.


Кто-нибудь знает о классе или структуре данных в Python, который приближается к этим шести требованиям?

6
задан Noctis Skytower 4 November 2010 в 16:09
поделиться