Comparison of data structures explained

This is a comparison of the performance of notable data structures, as measured by the complexity of their logical operations. For a more comprehensive listing of data structures, see List of data structures.

The comparisons in this article are organized by abstract data type. As a single concrete data structure may be used to implement many abstract data types, some data structures may appear in multiple comparisons (for example, a hash map can be used to implement an associative array or a set).

Lists

See also: List (abstract data type).

A list or sequence is an abstract data type that represents a finite number of ordered values, where the same value may occur more than once. Lists generally support the following operations:

Maps

See also: Associative array.

Maps store a collection of (key, value) pairs, such that each possible key appears at most once in the collection. They generally support three operations:

Unless otherwise noted, all data structures in this table require O(n) space.

Data structureLookup, removalInsertionOrdered
averagestyle=min-width:5em;max-width:5em worst caseaveragestyle=min-width:5em;max-width:5em worst case
Association listO(n)O(n)O(1)O(1)
B-treeO(log n)O(log n)O(log n)O(log n)
Hash tableO(1)O(n)O(1)O(n)
Unbalanced binary search treeO(log n)O(n)O(log n)O(n)

Integer keys

Some map data structures offer superior performance in the case of integer keys. In the following table, let be the number of bits in the keys.

Data structureLookup, removalInsertionSpace
averagestyle=min-width:5em;max-width:5em worst caseaveragestyle=min-width:5em;max-width:5em worst case
Fusion treeO(log m n)O(n)
Van Emde Boas treeO(log log m)O(log log m)O(log log m)O(log log m)O(m)
X-fast trieO(n log m)O(log log m)O(log log m)O(n log m)
Y-fast trieO(log log m)O(log log m)O(n)

Priority queues

See also: Priority queue.

A priority queue is an abstract data-type similar to a regular queue or stack. Each element in a priority queue has an associated priority. In a priority queue, elements with high priority are served before elements with low priority. Priority queues support the following operations:

Priority queues are frequently implemented using heaps.

Heaps

See also: Heap (data structure).

A (max) heap is a tree-based data structure which satisfies the : for any given node C, if P is a parent node of C, then the key (the value) of P is greater than or equal to the key of C.

In addition to the operations of an abstract priority queue, the following table lists the complexity of two additional logical operations:

References