Эффективная структура данных списка - PullRequest
3 голосов
/ 26 апреля 2011

Мне нужна структура данных типа списка для реализации в проекте. На самом деле это не обязательно должен быть какой-то список, но он должен быть быстрым, и я собираюсь использовать его для постоянной вставки / удаления / извлечения данных (других структур данных) из него. Я мог бы что-то вставить, выполнить поиск, вставить снова, удалить, выполнить поиск снова и т. Д., Поэтому действия являются случайными.

Я нашел ски-листы самыми быстрыми на данный момент, что там быстрее?

Ответы [ 3 ]

0 голосов
/ 26 апреля 2011

A hashtable / hashmap / dictionary звучит так, как вы хотите. Например, словари в Python.

0 голосов
/ 12 мая 2011

Вы можете посмотреть на BTree

0 голосов
/ 26 апреля 2011

Многое зависит от вашего языка.C дает вам максимальный контроль над вашей окончательной структурой данных, и вы получите одну из самых быстрых реализаций.С, конечно же, очень легко застрелить себя в ногу.Скорее плохо.Python абстрагирует много структуры данных списков, и я считаю, что она стабильно быстра, но я не слишком подчеркиваю это.

Я бы предложил проверить свежее мясо для готовых библиотек C, которые вы можете использовать для своей задачи.Возможно, страница в Википедии о пропущенных списках укажет вам на большее: http://en.wikipedia.org/wiki/Skip_list

Структуры данных - это глубокая тема, которая требует приличного заземления в большой O-нотации и именно того, что это означает, когда мы говорим о «скорости» и «эффективность "или вы не сможете сделать объективное сравнение.Наконец, у всего есть компромиссы.Выберите структуру данных, которая наиболее точно моделирует как ваши данные, так и то, как вы собираетесь манипулировать ими.Если ваши задачи довольно случайны, вернитесь к этапу проектирования и спросите себя, как вы можете уточнить, что происходит, прежде чем он попадет в структуру данных.То есть, разработайте свой алгоритм, а затем выберите структуру данных, чтобы дополнить ее.

...