Useful Links
Computer Science
Algorithms and Data Structures
Algorithms
1. Introduction to Algorithms
2. Data Structures
3. Algorithmic Design Paradigms
4. Sorting and Searching Algorithms
5. Graph Algorithms
6. Advanced Algorithm Topics
7. Complexity Theory
Sorting and Searching Algorithms
Searching Algorithms
Linear Search
Algorithm Description
Implementation
Iterative Version
Recursive Version
Time Complexity Analysis
Space Complexity
Variants
Sentinel Linear Search
Binary Linear Search
Binary Search
Prerequisites
Sorted Array Requirement
Random Access Requirement
Algorithm Description
Implementation
Recursive Implementation
Iterative Implementation
Time Complexity Analysis
Space Complexity
Variants
Lower Bound Search
Upper Bound Search
Equal Range Search
Applications
Dictionary Lookups
Database Queries
Interpolation Search
Principle
Uniform Distribution Assumption
Algorithm Description
Time Complexity
Best Case
Worst Case
Average Case
Comparison with Binary Search
Exponential Search
Algorithm Description
Use Cases
Time Complexity
Ternary Search
Algorithm Description
Comparison with Binary Search
Elementary Sorting Algorithms
Bubble Sort
Algorithm Description
Implementation
Time Complexity Analysis
Best Case
Average Case
Worst Case
Space Complexity
Optimizations
Early Termination
Cocktail Sort
Stability Analysis
Selection Sort
Algorithm Description
Implementation
Time Complexity Analysis
Space Complexity
Stability Analysis
Variants
Double Selection Sort
Insertion Sort
Algorithm Description
Implementation
Time Complexity Analysis
Space Complexity
Stability Analysis
Optimizations
Binary Insertion Sort
Shell Sort Connection
Practical Applications
Small Arrays
Nearly Sorted Arrays
Efficient Sorting Algorithms
Merge Sort
Divide-and-Conquer Approach
Algorithm Description
Merging Process
Two-Way Merge
Sentinel Values
Implementation
Top-Down Approach
Bottom-Up Approach
Time Complexity Analysis
Space Complexity Analysis
Stability
Variants
Natural Merge Sort
In-Place Merge Sort
Quick Sort
Divide-and-Conquer Approach
Partitioning Process
Partitioning Schemes
Lomuto Partition Scheme
Hoare Partition Scheme
Pivot Selection Strategies
First Element
Last Element
Random Element
Median-of-Three
Implementation
Basic Version
Randomized Version
Three-Way Partitioning
Time Complexity Analysis
Best Case
Average Case
Worst Case
Space Complexity
Optimizations
Tail Recursion Elimination
Hybrid with Insertion Sort
Variants
Dual-Pivot Quick Sort
Heap Sort
Heap Data Structure Review
Algorithm Description
Heap Construction
Bottom-Up Heapification
Time Complexity
Sorting Process
Extract-Max Operations
Heap Maintenance
Implementation
Time Complexity Analysis
Space Complexity
Stability Analysis
Comparison with Other O(n log n) Sorts
Linear-Time Sorting Algorithms
Counting Sort
Algorithm Description
Counting Array Construction
Reconstruction Process
Implementation
Time Complexity Analysis
Space Complexity Analysis
Stability
Limitations
Range Dependency
Integer Keys
Variants
Stable Counting Sort
Radix Sort
Principle
Digit-by-Digit Sorting
LSD Radix Sort
Least Significant Digit First
Implementation
MSD Radix Sort
Most Significant Digit First
Implementation
Recursive Structure
Time Complexity Analysis
Space Complexity Analysis
Stability
Applications
Integer Sorting
String Sorting
Bucket Sort
Algorithm Description
Bucket Distribution
Uniform Distribution Assumption
Hash Function Design
Sorting Within Buckets
Implementation
Time Complexity Analysis
Best Case
Average Case
Worst Case
Space Complexity
Use Cases
Floating Point Numbers
Uniformly Distributed Data
Sorting Algorithm Analysis
Comparison-Based Sorting
Lower Bound Theory
Decision Tree Model
Information-Theoretic Argument
Ω(n log n) Lower Bound
Stability in Sorting
Importance
Stable vs Unstable Algorithms
Making Unstable Algorithms Stable
In-Place vs Out-of-Place Sorting
Memory Usage
Space Complexity Classification
Trade-offs
Adaptive Sorting
Performance on Nearly Sorted Data
Practical Considerations
Cache Performance
Memory Hierarchy
Parallel Sorting
Hybrid Algorithms
Sorting Algorithm Selection
Problem Size Considerations
Data Characteristics
Memory Constraints
Stability Requirements
Previous
3. Algorithmic Design Paradigms
Go to top
Next
5. Graph Algorithms