What are the time complexities of various data structures?

后端 未结 1 1829
悲&欢浪女
悲&欢浪女 2020-11-28 00:26

I am trying to list time complexities of operations of common data structures like Arrays, Binary Search Tree, Heap, Linked List, etc. and especially I am referring to Java.

相关标签:
1条回答
  • 2020-11-28 00:43

    Arrays

    • Set, Check element at a particular index: O(1)
    • Searching: O(n) if array is unsorted and O(log n) if array is sorted and something like a binary search is used,
    • As pointed out by Aivean, there is no Delete operation available on Arrays. We can symbolically delete an element by setting it to some specific value, e.g. -1, 0, etc. depending on our requirements
    • Similarly, Insert for arrays is basically Set as mentioned in the beginning

    ArrayList:

    • Add: Amortized O(1)
    • Remove: O(n)
    • Contains: O(n)
    • Size: O(1)

    Linked List:

    • Inserting: O(1), if done at the head, O(n) if anywhere else since we have to reach that position by traveseing the linkedlist linearly.
    • Deleting: O(1), if done at the head, O(n) if anywhere else since we have to reach that position by traveseing the linkedlist linearly.
    • Searching: O(n)

    Doubly-Linked List:

    • Inserting: O(1), if done at the head or tail, O(n) if anywhere else since we have to reach that position by traveseing the linkedlist linearly.
    • Deleting: O(1), if done at the head or tail, O(n) if anywhere else since we have to reach that position by traveseing the linkedlist linearly.
    • Searching: O(n)

    Stack:

    • Push: O(1)
    • Pop: O(1)
    • Top: O(1)
    • Search (Something like lookup, as a special operation): O(n) (I guess so)

    Queue/Deque/Circular Queue:

    • Insert: O(1)
    • Remove: O(1)
    • Size: O(1)

    Binary Search Tree:

    • Insert, delete and search: Average case: O(log n), Worst Case: O(n)

    Red-Black Tree:

    • Insert, delete and search: Average case: O(log n), Worst Case: O(log n)

    Heap/PriorityQueue (min/max):

    • Find Min/Find Max: O(1)
    • Insert: O(log n)
    • Delete Min/Delete Max: O(log n)
    • Extract Min/Extract Max: O(log n)
    • Lookup, Delete (if at all provided): O(n), we will have to scan all the elements as they are not ordered like BST

    HashMap/Hashtable/HashSet:

    • Insert/Delete: O(1) amortized
    • Re-size/hash: O(n)
    • Contains: O(1)
    0 讨论(0)
提交回复
热议问题