Useful Links
Technology
Computer science
Data Structures and Algorithms
Algorithms
Analysis of Algorithms
Time Complexity
Big O Notation
Definition and usage
Common classes: O(1), O(n), O(log n), O(n²)
Asymptotic behavior
Big Omega Notation
Definition and contrast with Big O
Best-case analysis
Big Theta Notation
Tight bound analysis
When to use Big Theta
Space Complexity
Memory consumption analysis
Impact on system resources
Trade-offs with time complexity
Searching Algorithms
Linear Search
Iterative approach
Time complexity analysis
Use cases and limitations
Binary Search
Precondition: sorted data
Recursive and iterative methods
Time complexity: O(log n)
Applications and scenarios
Depth-First Search (DFS)
Stack-based or recursive implementation
Applications in graph theory
Time complexity analysis
Breadth-First Search (BFS)
Queue-based implementation
Shortest path finding
Time complexity analysis
Sorting Algorithms
Bubble Sort
Swapping and comparison
Time complexity and optimizations
Selection Sort
In-place comparison sort
Time complexity analysis
Insertion Sort
Incremental data sorting
Adaptive behavior and use cases
Merge Sort
Divide and conquer approach
Time complexity: O(n log n)
Stability and space usage
Quick Sort
Pivot selection strategies
Time complexity: average vs. worst case
In-place sorting and space efficiency
String Algorithms
String Matching
Knuth-Morris-Pratt (KMP)
Partial match table (prefix function)
Time complexity: O(n + m)
Rabin-Karp Algorithm
Hashing technique
Spurious hits and rolling hash
Boyer-Moore Algorithm
Bad character rule
Good suffix rule
Optimal time complexity
Tries for String Processing
Structure and implementation
Applications: autocomplete, spell checking
Space complexity and optimization techniques
Graph Algorithms
Shortest Path Algorithms
Dijkstra’s Algorithm
Priority queue utilization
Time complexity with different data structures
Bellman-Ford Algorithm
Handling negative weights
Time complexity: O(VE)
Floyd-Warshall Algorithm
Dynamic programming approach
All pairs shortest path problem
Minimum Spanning Tree
Kruskal’s Algorithm
Union-find data structure
Time complexity analysis
Prim’s Algorithm
Minimum spanning tree using priority queues
Differences with Kruskal’s algorithm
Network Flow Algorithms
Ford-Fulkerson Method
Augmenting path and flow conservation
Implementation considerations
Edmonds-Karp Algorithm
BFS approach
Time complexity analysis: O(VE²)
Dynamic Programming
Memoization
Top-down approach
Recursive state saving
Tabulation
Bottom-up approach
Iterative versus recursive paradigms
Common Problems
Fibonacci Sequence
Recursive vs. dynamic programming approaches
Knapsack Problem
0/1 Knapsack
Fractional knapsack and optimization
Longest Common Subsequence
DP table construction and solution
Matrix Chain Multiplication
Cost and sequence optimization
Greedy Algorithms
Characteristics
Local optimum choices leading to global optimum
Greedy choice property and optimal substructure
Common Strategies
Activity Selection Problem
Scheduling techniques and proofs
Huffman Coding
Data compression and tree construction
Prefix-free property and implementation
2. Data Structures
First Page
4. Advanced Topics