Data-Structures-and-Algorithms
Notation
Name
O(1)
Constant
O(logn)
Logarithmic
O(n)
Linear
O(nlogn)
n log-star n
O(n^2)
Quadratic
Operation
Time Complexity
Retrieve with index.
O(1) - Constant time
Retrieve without index.
O(n) - Linear time
Add an element to full array.
O(n) - Linear time
Add an element to the end of an array. (has space)
O(1) - Constant time
Insert or update an element at a specific index.
O(1) - Constant time
Delete an element by setting it to null.
O(1) - Constant time
Delete an element by shifting elements.
O(n) - Linear time
Time Complexities of all Sorting Algorithms
Performance
Time Complexity
Worst Case
O(n^2) - Quadratic time
Avarage Case
O(n^2) - Quadratic time
Best Case
O(n) - Linear time
Performance
Time Complexity
Worst Case
O(n^2) - Quadratic time
Avarage Case
O(n^2) - Quadratic time
Best Case
O(n^2) - Quadratic time
Performance
Time Complexity
Worst Case
O(n^2) - Quadratic time
Avarage Case
O(n^2) - Quadratic time
Best Case
O(n) - Linear time
Performance
Time Complexity
Worst Case
O(n^2) - Quadratic time
Avarage Case
O(nlogn) - n log-star n
Best Case
O(nlogn) - n log-star n
Performance
Time Complexity
Worst Case
O(nlogn) - n log-star n
Avarage Case
O(nlogn) - n log-star n
Best Case
O(nlogn) - n log-star n
Performance
Time Complexity
Worst Case
O(n^2) - Quadratic time
Avarage Case
O(nlogn) - n log-star n
Best Case
O(nlogn) - n log-star n
Performance
Time Complexity
Worst Case
O(n+k)
Avarage Case
O(n+k)
Best Case
O(n+k)
Performance
Time Complexity
Worst Case
O(kn)
Avarage Case
O(kn)
Best Case
O(kn)
Performance analysis of ArrayList, LinkedList and Vector
Operation
Time Complexity
Insert at last index
O(1) --> If array copy operation is Considered then O(n)
Insert at given index
O(n)
Search by value
O(n) ( Preferred )
Get by index
O(1) ( Preferred )
Remove by value
O(n)
Remove by index
O(n)
ArrayList <Employee > employees = new ArrayList <>();
Operation
Time Complexity
Insert at last index
O(1) ( Preferred )
Insert at given index
O(n) ( Preferred )
Search by value
O(n)
Get by index
O(n)
Remove by value
O(n) ( Preferred )
Remove by index
O(n) ( Preferred )
LinkedList <Employee > employees = new LinkedList <>();
Vector : Unlike the new collection implementations, Vector is synchronized.
If a thread-safe implementation is not needed, it is recommended to use
ArrayList in place of Vector.
Performance: ArrayList is faster, since it is non-synchronized, while vector operations give slower performance since they are synchronized (thread-safe).
Vector <Employee > employees = new Vector <>();
LIFO (Last-in-first-out)
Operation
Time Complexity
Push
O(n)
Pop
O(1)
Peek
O(1)
Operation
Time Complexity
Push
O(1)
Pop
O(1)
Peek
O(1)
Operation
Time Complexity
Search
O(n)
Operation
Time Complexity
Search
O(logn)
FIFO (First-in-first-out)
Array implementation of queue
Operation
Time Complexity
Add
O(1)
Remove
O(n)
Peek
O(1)
LinkedList implementation of queue
Operation
Time Complexity
Add
O(1)
Remove
O(1)
Peek
O(1)
Binary Search Tree ( BST )
Operation
Time Complexity
Insertion
O(logn)
Deletion
O(logn)
Retrieval
O(logn)