Какая временная сложность (в примечаниях с большим О) предоставляется спецификацией ES6 для Keyed Collections (Set, Map, WeakSet и WeakMap)?Javascript ES6 вычислительная/временная сложность коллекций
Мои ожидания, и я ожидаю, что от большинства разработчиков, является то, что спецификации и реализации будут использовать widely accepted производительных алгоритмов, в этом случае Set.prototype.has
, add
и delete
всем, быть O (1) в среднем случае. То же самое для эквивалентов Map
и Weak–
.
Не совсем очевидно, была ли задана временная сложность реализации, например. в ECMAScript 2015 Language Specification - 6th Edition — 23.2 Set Objects.
Если не понимают его (и это, безусловно, очень возможно, я), это выглядит спецификации ECMA мандатов, что реализация (например Set.prototype.has
) являются использовать линейное время (O (N)) алгоритм. Мне было бы чрезвычайно удивительно, что более эффективные алгоритмы не были бы санкционированы или даже разрешены спецификацией, и мне было бы очень интересно объяснить, почему это так.
Алгоритмы All * O (1) * - это * O (n) *, поэтому включение в спецификации менее реалистичных реализаций не наносит вреда. Вероятно, менее реалистичные реализации могут представлять определенный интерес для систем с ограниченными ресурсами, поскольку, скорее всего, они требуют гораздо меньше кода/пространства. –
@arturgrzesiak Производительность клавишных коллекций O (1), как правило, достигается с помощью хэша O (1) плюс ковша столкновения O (n). Наихудший случай O (n) для большинства практических целей астрономически редок. Сложная сложность этих методов, как правило, O (n). –
«Заданные объекты должны быть реализованы с использованием либо хэш-таблиц, либо других механизмов, которые в среднем предоставляют время доступа, которое является сублинейным по количеству элементов в коллекции». - с этой самой страницы. – georg