Data Structures
| Data Structure | Average cases | Worst cases | ||||
|---|---|---|---|---|---|---|
| Insert | Delete | Search | Insert | Delete | Search | |
| Array | N/A | N/A | O(1) | N/A | N/A | O(1) |
| Sorted array | O(n) | O(n) | O(log(n)) | O(n) | O(n) | O(log(n)) |
| Stack/Queue | O(1) | O(1) | O(n) | O(1) | O(1) | O(n) |
| Linked list | O(1) | O(1) | O(n) | O(1) | O(1) | O(n) |
| Doubly linked list | O(1) | O(1) | O(n) | O(1) | O(1) | O(n) |
| Hash table | O(1) | O(1) | O(1) | O(n) | O(n) | O(n) |
| Binary search tree | O(log(n)) | O(log(n)) | O(log(n)) | O(n) | O(n) | O(n) |
| AVL tree | O(log(n)) | O(log(n)) | O(log(n)) | O(log(n)) | O(log(n)) | O(log(n)) |
| Red-Black tree | O(log(n)) | O(log(n)) | O(log(n)) | O(log(n)) | O(log(n)) | O(log(n)) |
Graphs
| Node/edge management | Storage size | Add vertex | Add edge | Remove vertex | Remove edge | Query |
|---|---|---|---|---|---|---|
| Adjacency list | O(|V| + |E|) | O(1) | O(1) | O(|V| + |E|) | O(|E|) | O(|V|) |
| Adjacency matrix | O(|V|²) | O(|V|²) | O(1) | O(|V|²) | O(1) | O(1) |
Sorting algorithms
| Algorithm(applied to array) | Time complexity | Stability | ||
|---|---|---|---|---|
| Best cases | Average cases | Worst cases | ||
| Bubble sort | O(n) | O(n²) | O(n²) | Yes |
| Selection sort | O(n²) | O(n²) | O(n²) | No |
| Insertion sort | O(n) | O(n²) | O(n²) | Yes |
| Merge sort | O(n log(n)) | O(n log(n)) | O(n log(n)) | Yes |
| Quick sort | O(n log(n)) | O(n log(n)) | O(n²) | Typical in-place sort is not stable; stable versions exist |
Searching algorithms
| Algorithm | Data structure | Worst case |
|---|---|---|
| Sequential search | Array and linked list | O(n) |
| Binary search | Sorted array and binary search tree | O(log(n)) |
| Depth-first search(DFS) | Graph of |V| vertices and |E| edges | O(|V| + |E|) |
| Breadth-first search(BFS) | Graph of |V| vertices and |E| edges | O(|V| + |E|) |