Skip to the content.

Time Complexities of Algorithms

Algorithm Best Time Ω Worst Time O Average Time Θ Worst Space Reccursion
Linear Search O(1) O(n) O(n) O(1) T(n)=T(n-1) + B
Binary Search O(1) O(logn) O(logn) O(1) T(n)=T(n/2)+1
Bubble Sort O(n) O(n²) O(n²) O(1) -
Selection Sort O(n²) O(n²) O(n²) O(1) T(n)=T(n-1) -1
Insertion Sort O(n) O(n²) O(n²) O(1) T(n)=T(n−1)+n
Merge Sort O(nlogn) O(nlogn) O(nlogn) O(n) T(n)=2T(n/2)+n
Quick Sort O(nlogn) O(n²) O(nlogn) O(n) T(n)=T(n-1)+O(n)
Quick Lomuto O(nlogn)  O(n²) O(nlogn) O(n) T(n)=T(n-1)+O(n)
Quick Hoare O(nlogn)  O(n²) O(nlogn) O(n) T(n)=T(n-1)+O(n)
Build Heap O(n) O(n) O(n) O(n) -
Heap Sort O(nlogn) O(nlogn) O(nlogn) O(1) T(n)=O(n) + nO(lgn)
Heapify - - - O(logn) T(n)=T(2n/3)+O(1)
Radix Sort O(nk) O(nk) O(nk) O(n+k) -
Tim Sort O(n) O(nlogn) O(nlogn) O(1) -

Time Complexities of Data Structures

Data Structure avg. Indexing avg. Search avg. Insertion avg. Deletion Worst: Indexing Worst: Search Worst: Insertion Worst: Deletion Worst: Space
array O(1) O(n) O(n) O(n) O(1) O(n) O(n) O(n) O(n)
Dynamic Array O(1) O(n) O(n) O(n) O(1) O(n) O(n) O(n) O(n)
Singly linked list O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
doubly linked list O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
Hash Table - O(1) O(1) O(1) - O(n) O(n) O(n) O(n)
BST O(logn) O(logn) O(logn) O(logn) O(n) O(n) O(n) O(n) O(n)
Stack O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
Queue O(n) O(n) O(1) O(1) O(n) O(n) O(1) O(1) O(n)
Cartesian Tree - O(logn) O(logn) O(logn) - O(n) O(n) O(n) O(n)
RBT O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(n)
AVL Tree O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(n)
B-Tree O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(logn) O(n)