Skip to content

Repository files navigation

Stepsort Solutions

Companion repository to Stepsort β€” interactive algorithm visualizations.

Every solution here has a step-by-step animated walkthrough on the website. Click the 🎬 links below to watch one execute before reading the code.

300 algorithms Β· Python Β· C++ Β· Java β€” all compile-checked weekly by CI.

Sorting

Algorithm Python C++ Java Visualization
Bubble Sort py cpp java 🎬 Watch
Selection Sort py cpp java 🎬 Watch
Insertion Sort py cpp java 🎬 Watch
Merge Sort py cpp java 🎬 Watch
Quick Sort py cpp java 🎬 Watch
Heap Sort py cpp java 🎬 Watch
Counting Sort py cpp java 🎬 Watch
Radix Sort py cpp java 🎬 Watch
Shell Sort py cpp java 🎬 Watch
Bucket Sort py cpp java 🎬 Watch
Cocktail Shaker Sort py cpp java 🎬 Watch
Comb Sort py cpp java 🎬 Watch
Gnome Sort py cpp java 🎬 Watch
Tim Sort py cpp java 🎬 Watch
Pigeonhole Sort py cpp java 🎬 Watch
Cycle Sort py cpp java 🎬 Watch
Strand Sort py cpp java 🎬 Watch
Pancake Sort py cpp java 🎬 Watch
Bogo Sort py cpp java 🎬 Watch
Bitonic Sort py cpp java 🎬 Watch
Tree Sort py cpp java 🎬 Watch
IntroSort py cpp java 🎬 Watch
Dutch National Flag py cpp java 🎬 Watch

Searching

Algorithm Python C++ Java Visualization
Linear Search py cpp java 🎬 Watch
Binary Search py cpp java 🎬 Watch
Jump Search py cpp java 🎬 Watch
Interpolation Search py cpp java 🎬 Watch
Exponential Search py cpp java 🎬 Watch
Ternary Search py cpp java 🎬 Watch
Fibonacci Search py cpp java 🎬 Watch
Sentinel Linear Search py cpp java 🎬 Watch
Two Pointer Search py cpp java 🎬 Watch
Depth-Limited Search py cpp java 🎬 Watch
Iterative Deepening DFS py cpp java 🎬 Watch
Bidirectional Search py cpp java 🎬 Watch
Binary Search on Answer py cpp java 🎬 Watch

Graph

Algorithm Python C++ Java Visualization
BFS py cpp java 🎬 Watch
DFS py cpp java 🎬 Watch
Dijkstra's py cpp java 🎬 Watch
Bellman-Ford py cpp java 🎬 Watch
Floyd-Warshall py cpp java 🎬 Watch
Kruskal's MST py cpp java 🎬 Watch
Prim's MST py cpp java 🎬 Watch
Topological Sort py cpp java 🎬 Watch
A Search* py cpp java 🎬 Watch
Graph Coloring py cpp java 🎬 Watch
Cycle Detection py cpp java 🎬 Watch
Tarjan's SCC py cpp java 🎬 Watch
Bridges & Articulation Points py cpp java 🎬 Watch
Kosaraju's SCC py cpp java 🎬 Watch
Eulerian Path/Circuit py cpp java 🎬 Watch
Hamiltonian Path py cpp java 🎬 Watch
Bipartite Check py cpp java 🎬 Watch
Ford-Fulkerson Max Flow py cpp java 🎬 Watch
Johnson's Algorithm py cpp java 🎬 Watch
Union-Find (DSU) py cpp java 🎬 Watch
0-1 BFS py cpp java 🎬 Watch
DAG Shortest Path py cpp java 🎬 Watch
Boruvka's MST py cpp java 🎬 Watch
Biconnected Components py cpp java 🎬 Watch
Offline Dynamic Connectivity py cpp java 🎬 Watch
Konig's Min Vertex Cover py cpp java 🎬 Watch
Blossom Algorithm (Edmonds) py cpp java 🎬 Watch
Capacity Scaling Max Flow py cpp java 🎬 Watch
Multi-Source 0-1 BFS py cpp java 🎬 Watch
DAG Dynamic Programming py cpp java 🎬 Watch
General Graph Matching py cpp java 🎬 Watch
Minimum Cut Reconstruction py cpp java 🎬 Watch
Minimum Vertex Cut py cpp java 🎬 Watch
Bipartite Independent Set py cpp java 🎬 Watch
Transitive Closure py cpp java 🎬 Watch
Multi-Source BFS py cpp java 🎬 Watch
Weighted Union-Find py cpp java 🎬 Watch
Flood Fill py cpp java 🎬 Watch
SPFA (Shortest Path Faster) py cpp java 🎬 Watch

Tree

Algorithm Python C++ Java Visualization
BST Insert py cpp java 🎬 Watch
BST Search py cpp java 🎬 Watch
BST Delete py cpp java 🎬 Watch
Inorder Traversal py cpp java 🎬 Watch
Preorder Traversal py cpp java 🎬 Watch
Postorder Traversal py cpp java 🎬 Watch
Level-order Traversal py cpp java 🎬 Watch
AVL Rotations py cpp java 🎬 Watch
Heap Insert py cpp java 🎬 Watch
Heap Extract Max py cpp java 🎬 Watch
Trie Insert & Search py cpp java 🎬 Watch
Segment Tree py cpp java 🎬 Watch
Fenwick Tree (BIT) py cpp java 🎬 Watch
Red-Black Tree py cpp java 🎬 Watch
B-Tree Operations py cpp java 🎬 Watch
Lowest Common Ancestor py cpp java 🎬 Watch
Morris Traversal py cpp java 🎬 Watch
Tree Diameter py cpp java 🎬 Watch
Lazy Propagation Segment Tree py cpp java 🎬 Watch
Binary Lifting (LCA) py cpp java 🎬 Watch
Heavy-Light Decomposition py cpp java 🎬 Watch
Sparse Table (RMQ) py cpp java 🎬 Watch
Persistent Segment Tree py cpp java 🎬 Watch
Merge Sort Tree py cpp java 🎬 Watch
Wavelet Tree py cpp java 🎬 Watch
Li Chao Tree py cpp java 🎬 Watch
DSU on Tree (Small-to-Large) py cpp java 🎬 Watch
Link-Cut Tree py cpp java 🎬 Watch

Dynamic Programming

Algorithm Python C++ Java Visualization
Fibonacci py cpp java 🎬 Watch
0/1 Knapsack py cpp java 🎬 Watch
Longest Common Subsequence py cpp java 🎬 Watch
Coin Change py cpp java 🎬 Watch
Matrix Chain Multiplication py cpp java 🎬 Watch
Longest Increasing Subsequence py cpp java 🎬 Watch
Edit Distance py cpp java 🎬 Watch
Rod Cutting py cpp java 🎬 Watch
Climbing Stairs py cpp java 🎬 Watch
House Robber py cpp java 🎬 Watch
Partition Equal Subset Sum py cpp java 🎬 Watch
Word Break py cpp java 🎬 Watch
Unique Paths py cpp java 🎬 Watch
Minimum Path Sum py cpp java 🎬 Watch
Palindrome Partitioning py cpp java 🎬 Watch
Egg Drop Problem py cpp java 🎬 Watch
Decode Ways py cpp java 🎬 Watch
Maximal Square py cpp java 🎬 Watch
Digit DP py cpp java 🎬 Watch
Convex Hull Trick py cpp java 🎬 Watch
Bitmask DP (TSP) py cpp java 🎬 Watch
Tree DP (Max Independent Set) py cpp java 🎬 Watch
Interval DP (Matrix Chain) py cpp java 🎬 Watch
Knuth Optimization (Optimal BST) py cpp java 🎬 Watch
Divide & Conquer Optimization py cpp java 🎬 Watch
Profile Dynamic Programming py cpp java 🎬 Watch
SOS DP (Sum Over Subsets) py cpp java 🎬 Watch
Subset Convolution py cpp java 🎬 Watch
Multi-Constraint Digit DP py cpp java 🎬 Watch
Tree Rerooting DP py cpp java 🎬 Watch
LIS Reconstruction py cpp java 🎬 Watch
Knapsack Optimizations py cpp java 🎬 Watch

Greedy

Algorithm Python C++ Java Visualization
Activity Selection py cpp java 🎬 Watch
Huffman Coding py cpp java 🎬 Watch
Fractional Knapsack py cpp java 🎬 Watch
Job Sequencing py cpp java 🎬 Watch
Coin Change (Greedy) py cpp java 🎬 Watch
Interval Scheduling py cpp java 🎬 Watch
Minimum Platforms py cpp java 🎬 Watch
Optimal Merge Pattern py cpp java 🎬 Watch
Gas Station py cpp java 🎬 Watch
Jump Game py cpp java 🎬 Watch
Task Scheduler py cpp java 🎬 Watch
Best Time to Buy/Sell Stock py cpp java 🎬 Watch

Backtracking

Algorithm Python C++ Java Visualization
N-Queens py cpp java 🎬 Watch
Sudoku Solver py cpp java 🎬 Watch
Rat in a Maze py cpp java 🎬 Watch
Subset Sum py cpp java 🎬 Watch
Permutations py cpp java 🎬 Watch
Combination Sum py cpp java 🎬 Watch
Word Search py cpp java 🎬 Watch
Knight's Tour py cpp java 🎬 Watch
M-Coloring Problem py cpp java 🎬 Watch
Hamiltonian Cycle (BT) py cpp java 🎬 Watch
Crossword Solver py cpp java 🎬 Watch
Letter Combinations py cpp java 🎬 Watch

String

Algorithm Python C++ Java Visualization
KMP Pattern Matching py cpp java 🎬 Watch
Rabin-Karp py cpp java 🎬 Watch
Longest Palindromic Substring py cpp java 🎬 Watch
String Reversal py cpp java 🎬 Watch
Anagram Check py cpp java 🎬 Watch
Z Algorithm py cpp java 🎬 Watch
Manacher's Algorithm py cpp java 🎬 Watch
Suffix Array py cpp java 🎬 Watch
Aho-Corasick py cpp java 🎬 Watch
Boyer-Moore py cpp java 🎬 Watch
Levenshtein Distance py cpp java 🎬 Watch
Longest Repeated Substring py cpp java 🎬 Watch
Run-Length Encoding py cpp java 🎬 Watch
Suffix Automaton py cpp java 🎬 Watch
Kasai's Algorithm py cpp java 🎬 Watch
Suffix Tree (Compressed) py cpp java 🎬 Watch
Eertree (Palindromic Tree) py cpp java 🎬 Watch
Rolling Hash (Polynomial) py cpp java 🎬 Watch
Aho-Corasick Failure Links py cpp java 🎬 Watch
Suffix Array + LCP py cpp java 🎬 Watch
Booth's Algorithm py cpp java 🎬 Watch
Palindromic Tree Applications py cpp java 🎬 Watch
Rolling Hash Collision Demo py cpp java 🎬 Watch
Suffix Automaton Applications py cpp java 🎬 Watch

Linked List

Algorithm Python C++ Java Visualization
Insertion py cpp java 🎬 Watch
Deletion py cpp java 🎬 Watch
Reversal py cpp java 🎬 Watch
Cycle Detection py cpp java 🎬 Watch
Merge Two Sorted Lists py cpp java 🎬 Watch
Nth from End py cpp java 🎬 Watch
Palindrome Check py cpp java 🎬 Watch
Find Intersection py cpp java 🎬 Watch
Remove Duplicates py cpp java 🎬 Watch
Flatten Multi-Level List py cpp java 🎬 Watch
Add Two Numbers py cpp java 🎬 Watch
Rotate List py cpp java 🎬 Watch
Sort Linked List py cpp java 🎬 Watch
Copy with Random Pointer py cpp java 🎬 Watch

Divide & Conquer

Algorithm Python C++ Java Visualization
Binary Search (D&C) py cpp java 🎬 Watch
Maximum Subarray py cpp java 🎬 Watch
Closest Pair of Points py cpp java 🎬 Watch
Strassen's Multiplication py cpp java 🎬 Watch
Karatsuba Multiplication py cpp java 🎬 Watch
Quick Select py cpp java 🎬 Watch
Convex Hull py cpp java 🎬 Watch
FFT (Fast Fourier Transform) py cpp java 🎬 Watch
Mo's Algorithm py cpp java 🎬 Watch
Cartesian Tree py cpp java 🎬 Watch
Centroid Decomposition py cpp java 🎬 Watch

Bit Manipulation

Algorithm Python C++ Java Visualization
Count Set Bits py cpp java 🎬 Watch
Power of Two Check py cpp java 🎬 Watch
Single Number (XOR) py cpp java 🎬 Watch
Reverse Bits py cpp java 🎬 Watch
Subsets via Bitmask py cpp java 🎬 Watch
Hamming Distance py cpp java 🎬 Watch
Swap Without Temp py cpp java 🎬 Watch
Missing Number (XOR) py cpp java 🎬 Watch
Counting Bits (DP) py cpp java 🎬 Watch

Math & Number Theory

Algorithm Python C++ Java Visualization
Euclidean GCD py cpp java 🎬 Watch
Sieve of Eratosthenes py cpp java 🎬 Watch
Fast Exponentiation py cpp java 🎬 Watch
Prime Factorization py cpp java 🎬 Watch
Modular Arithmetic py cpp java 🎬 Watch
Catalan Numbers py cpp java 🎬 Watch
Chinese Remainder Theorem py cpp java 🎬 Watch
Euler's Totient py cpp java 🎬 Watch
Miller-Rabin Primality py cpp java 🎬 Watch
Extended Euclidean GCD py cpp java 🎬 Watch
Fibonacci (Matrix Exp) py cpp java 🎬 Watch
Number Theoretic Transform py cpp java 🎬 Watch

Hashing

Algorithm Python C++ Java Visualization
Chaining py cpp java 🎬 Watch
Linear Probing py cpp java 🎬 Watch
Quadratic Probing py cpp java 🎬 Watch
Double Hashing py cpp java 🎬 Watch
Two Sum (Hash Map) py cpp java 🎬 Watch
Cuckoo Hashing py cpp java 🎬 Watch
Robin Hood Hashing py cpp java 🎬 Watch
Frequency Count py cpp java 🎬 Watch
Group Anagrams py cpp java 🎬 Watch
LRU Cache py cpp java 🎬 Watch
Consistent Hashing py cpp java 🎬 Watch
Count-Min Sketch py cpp java 🎬 Watch

Computational Geometry

Algorithm Python C++ Java Visualization
Graham Scan py cpp java 🎬 Watch
Jarvis March py cpp java 🎬 Watch
Line Intersection py cpp java 🎬 Watch
Polygon Area (Shoelace) py cpp java 🎬 Watch
Point in Polygon py cpp java 🎬 Watch
Closest Pair (D&C) py cpp java 🎬 Watch
Voronoi Diagram py cpp java 🎬 Watch
Delaunay Triangulation py cpp java 🎬 Watch
Sweep Line Intersections py cpp java 🎬 Watch
Rotating Calipers py cpp java 🎬 Watch

Number Theory (Adv)

Algorithm Python C++ Java Visualization
Pollard's Rho py cpp java 🎬 Watch
Lucas' Theorem py cpp java 🎬 Watch
Mâbius Function py cpp java 🎬 Watch
Discrete Logarithm py cpp java 🎬 Watch
Primitive Root py cpp java 🎬 Watch
Quadratic Residue py cpp java 🎬 Watch
Stern-Brocot Tree py cpp java 🎬 Watch
Continued Fractions py cpp java 🎬 Watch

Randomized Algorithms

Algorithm Python C++ Java Visualization
Monte Carlo (Ο€) py cpp java 🎬 Watch
Las Vegas Sort py cpp java 🎬 Watch
Reservoir Sampling py cpp java 🎬 Watch
Skip List py cpp java 🎬 Watch
Bloom Filter py cpp java 🎬 Watch
Miller-Rabin (Randomized) py cpp java 🎬 Watch
Karger's Min Cut py cpp java 🎬 Watch
Fisher-Yates Shuffle py cpp java 🎬 Watch
Treap py cpp java 🎬 Watch

Network Flow & Matching

Algorithm Python C++ Java Visualization
Ford-Fulkerson py cpp java 🎬 Watch
Edmonds-Karp py cpp java 🎬 Watch
Dinic's Algorithm py cpp java 🎬 Watch
Hungarian Algorithm py cpp java 🎬 Watch
Hopcroft-Karp py cpp java 🎬 Watch
Min-Cost Max Flow py cpp java 🎬 Watch
Gale-Shapley (Stable Matching) py cpp java 🎬 Watch
Push-Relabel py cpp java 🎬 Watch

LeetCode Patterns

Algorithm Python C++ Java Visualization
Two Sum py cpp java 🎬 Watch
Container With Most Water py cpp java 🎬 Watch
Sliding Window Maximum py cpp java 🎬 Watch
Longest Substring Without Repeating py cpp java 🎬 Watch
Linked List Cycle py cpp java 🎬 Watch
Merge Intervals py cpp java 🎬 Watch
Find Missing Number py cpp java 🎬 Watch
Reverse Linked List py cpp java 🎬 Watch
Binary Tree Level Order py cpp java 🎬 Watch
Binary Tree Path Sum py cpp java 🎬 Watch
Find Median from Data Stream py cpp java 🎬 Watch
Kth Largest Element py cpp java 🎬 Watch
Subsets (Power Set) py cpp java 🎬 Watch
Search in Rotated Sorted Array py cpp java 🎬 Watch
Number of Islands py cpp java 🎬 Watch
Course Schedule py cpp java 🎬 Watch
Implement Trie (Prefix Tree) py cpp java 🎬 Watch
Daily Temperatures py cpp java 🎬 Watch
Spiral Matrix py cpp java 🎬 Watch
Merge K Sorted Lists py cpp java 🎬 Watch
Boyer-Moore Majority Vote py cpp java 🎬 Watch
Sliding Window Minimum py cpp java 🎬 Watch
Next Greater Element py cpp java 🎬 Watch
Rotate Image py cpp java 🎬 Watch

Compiling locally

g++ -std=c++17 sorting/bubble-sort/solution.cpp -o bubble
javac graphs/bfs/Solution.java
python3 sorting/bubble-sort/solution.py

License

Code in this repository is released under the MIT License β€” provided for learning purposes. The Stepsort platform itself remains Β© 2026 Prakash Raj.

About

Companion repository to https://stepsort.prakashraj.me

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages