{"id":17026293,"url":"https://github.com/st3v3nmw/rust-algorithms","last_synced_at":"2025-08-15T19:12:34.743Z","repository":{"id":50572223,"uuid":"253448770","full_name":"st3v3nmw/rust-algorithms","owner":"st3v3nmw","description":"Algorithms and data structures implemented in Rust.","archived":false,"fork":false,"pushed_at":"2023-09-21T07:36:58.000Z","size":179,"stargazers_count":15,"open_issues_count":0,"forks_count":10,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T11:41:15.263Z","etag":null,"topics":["algorithms","algorithms-and-data-structures","data-structures","dynamic-programming","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/st3v3nmw.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-06T09:15:20.000Z","updated_at":"2025-03-25T12:48:05.000Z","dependencies_parsed_at":"2024-10-14T07:31:41.999Z","dependency_job_id":"69a2be44-b211-4194-9c51-8d26d963c497","html_url":"https://github.com/st3v3nmw/rust-algorithms","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/st3v3nmw/rust-algorithms","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/st3v3nmw%2Frust-algorithms","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/st3v3nmw%2Frust-algorithms/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/st3v3nmw%2Frust-algorithms/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/st3v3nmw%2Frust-algorithms/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/st3v3nmw","download_url":"https://codeload.github.com/st3v3nmw/rust-algorithms/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/st3v3nmw%2Frust-algorithms/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270617821,"owners_count":24617122,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-15T02:00:12.559Z","response_time":110,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["algorithms","algorithms-and-data-structures","data-structures","dynamic-programming","rust"],"created_at":"2024-10-14T07:31:38.067Z","updated_at":"2025-08-15T19:12:34.690Z","avatar_url":"https://github.com/st3v3nmw.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Algorithms\n\nRepository for my algorithms and data structures implementation (Lists approx. 350 algorithms).\n\nChecked algorithms have been implemented in Rust in \"src/respective folder\".\n\n## Backtracking\n\n- [ ] Crossword Puzzle\n- [ ] Hamiltonian Cycle\n- [ ] Knight's Tour Problem\n- [ ] N Queens Puzzle\n- [ ] Subset Sum\n- [x] Sudoku\n\n## Combinatorics\n\n- [ ] Binomial Coefficients\n- [ ] Burnside's lemma\n- [ ] Brent's algorithm\n- [ ] Catalan Numbers\n- [ ] Fisher-Yates shuffle\n- [ ] Floyd's cycle-finding algorithm\n- [ ] Gale-Shapley algorithm\n\n## Compression\n\n- [ ] Arithmetic Coding\n- [ ] Delta Encoding\n- [ ] Huffman Coding\n- [ ] Lempel-Ziv-Welch algorithm\n- [ ] LZ77\n- [ ] Run-length encoding\n- [ ] Shannon-Fano coding\n- [ ] Wavelet Compression\n\n## Cryptography\n\n- [ ] Affine Cipher\n- [ ] Base16\n- [ ] Base32\n- [ ] Base64\n- [ ] Base85\n- [ ] Caesar Cipher\n- [ ] Diffie-Hellman Key Exchange\n- [ ] Elliptic-curve Diffie-Hellman\n- [ ] Hill Cipher\n- [ ] Locality Sensitive Hashing\n- [ ] RSA Cipher\n- [ ] RSA Factorization\n- [ ] RSA Key Generator\n- [ ] Shuffled Shift Cipher\n- [ ] Simple Substitution Cipher\n- [ ] Transposition Cipher\n- [ ] XOR Cipher\n\n## Data Structures\n\n- [ ] Bitset\n- [ ] Bloom Filter\n- [ ] Hash Table\n- [x] Stack (Dynamic Array Based)\n\n### Heap\n\n- [ ] Binomial Heap\n- [ ] Fibonacci Heap\n- [ ] Min Heap\n- [ ] Randomized Heap\n\n### Linked List\n\n- [ ] Doubly Linked List\n- [ ] Circular Linked List\n- [ ] Singly Linked List\n- [ ] Skip List\n\n### Queue\n\n- [ ] Deque\n- [ ] Priority Queue\n- [x] Queue (Dynamic Array Based)\n\n### Tree\n\n- [ ] (2,4) tree\n- [ ] AVL Tree\n- [ ] B Tree\n- [ ] Basic Binary Tree\n- [ ] Binary Search Tree\n- [ ] Fenwick Tree\n- [ ] Interval Tree\n- [ ] K-d tree\n- [ ] Link cut Tree\n- [ ] Merkle Tree\n- [ ] Quad Tree\n- [ ] Red-Black Tree\n- [ ] Segment Tree with lazy propagation\n- [ ] Splay Tree\n- [ ] Sqrt tree\n- [ ] Stern-Brocot Tree and Farey sequences\n- [ ] Treap/Cartesian Tree\n- [ ] van Emde Boas Tree\n\n### Union Find\n\n- [ ] Grid Percolation\n- [ ] Lowest Common Ancestors using DSU\n- [ ] Union Find with path compression\n\n## Dynamic Programming\n\n- [x] Coin Change Problem\n- [x] Coin Row Problem\n- [ ] Edit/Levenshtein Distance\n- [ ] Fibonacci (Fast Doubling)\n- [ ] Fibonacci (Matrix Exponentiation)\n- [x] Fibonacci (Recursion with memoization)\n- [ ] Josephus Problem\n- [x] Kadane's algorithm - Maximum Subarray Problem\n- [x] 0-1 Knapsack Problem (Bounded)\n- [x] 0-1 Knapsack Problem (Unbounded)\n- [ ] Longest Common Subsequence\n- [ ] Longest Common Substring\n- [ ] Longest Bitonic Subsequence\n- [ ] Longest Increasing Subsequence\n- [ ] Longest Palindrome Subsequence\n- [ ] Matrix Chain Multiplication\n- [ ] Shortest Common Supersequence\n- [ ] Subset Sum\n- [ ] Wildcard Pattern Matching\n- [ ] Word Break Problem\n\n## Fast Fourier Transform\n\n- [ ] Bluestein's FFT algorithm\n- [ ] Bruun's FFT algorithm\n- [ ] Cooley-Tukey algorithm\n- [ ] Prime factor FFT algorithm\n- [ ] Rader's FFT algorithm\n\n## Game Theory\n\n- [ ] Alpha-beta pruning\n- [ ] Minimax\n- [x] Sprague-Grundy Theorem\n- [ ] SSS-* (State Space Search)\n\n## Geometry\n\n- [ ] Angles between vectors (2D, 3D)\n- [ ] Centroids\n- [ ] Closest Pair of Points\n- [ ] Collinear Points\n- [ ] Collision detection\n- [ ] Cone algorithm\n- [ ] Coplanar Points\n- [ ] Convex Hull (Chan's algorithm)\n- [ ] Convex Hull (Gift wrapping algorithm)\n- [ ] Convex Hull (Graham's scan)\n- [ ] Convex Hull (Quickhull)\n- [ ] Euclidean Distance\n- [ ] Geometric hashing\n- [ ] Gilbert-Johnson-Keerthi distance\n- [ ] Jump-and-Walk algorithm\n- [ ] Kirkpatrick-Seidel algorithm\n- [ ] Line segment intersection\n- [ ] Manhattan Distance\n- [ ] Mesh Generation\n- [ ] Minimum bounding box algorithm\n- [ ] Minkowski sum of convex polygons\n- [ ] Nearest Neighbour search\n- [x] Pick's Theorem\n- [ ] Point in polygon\n- [ ] Point Rotation\n- [ ] Shoelace algorithm\n- [ ] Sweep line algorithm\n\n## Graph Theory\n\n- [ ] A-* Search\n- [ ] B-* Search\n- [ ] Adjacency List\n- [ ] Adjacency Matrix\n- [ ] Beam Search\n- [ ] Beam stack search\n- [ ] Bellman-Ford Shortest Path\n- [ ] Best first search\n- [ ] Bidirectional search\n- [ ] Bipartite Graph Check\n- [ ] Breadth First Search\n- [ ] Bron-Kerbosch algorithm\n- [ ] Christofides algorithm\n- [ ] Condensation Graph\n- [ ] Depth First Search\n- [ ] Detect and find cycles in a graph\n- [ ] Dijkstra's Shorted Path\n- [ ] D'Esopo-Pape algorithm\n- [ ] Edmonds' Algorithm\n- [ ] Euclidean shortest path problem\n- [ ] Euler Tour\n- [ ] Finding articulation points\n- [ ] Finding augmenting paths in a flow network\n- [ ] Finding bridges\n- [ ] Finding negative cycles\n- [ ] Floyd-Warshall Shortest Path\n- [ ] General Problem Solver\n- [ ] Girvan-Newman algorithm\n- [ ] Graph Coloring Algorithm\n- [ ] Heavy light decomposition\n- [ ] Hopcroft-Karp algorithm\n- [ ] Hungarian algorithm\n- [ ] Hyperlink-Induced Topic Search\n- [ ] Isomorphism\n- [ ] Iterative deepening DFS\n- [ ] Johnson's algorithm for sparse paths\n- [ ] Jump point search\n- [ ] Karger's algorithm\n- [ ] Kirchhoff's theorem\n- [ ] Kosaraju's algorithm - strongly connected components\n- [ ] Lexicographic BFS\n- [ ] Lowest Common Ancestor (Binary Lifting)\n- [ ] Lowest Common Ancestor (Farach-Colton and Bender algorithm)\n- [ ] Lowest Common Ancestor (Tarjan's off-line)\n- [ ] Longest path problem\n- [ ] Maximum Bipartite Matching\n- [ ] Maximum Flow (Dinic's Algorithm)\n- [ ] Maximum Flow (Ford-Fulkerson algorithm)\n- [ ] Maximum Flow (Push-relabel algorithm)\n- [ ] Minimum Spanning Tree (Kruskal)\n- [ ] Minimum Spanning Tree (Prim's)\n- [ ] Multifragment Heuristic\n- [ ] PageRank\n- [ ] Path-based strong components algorithm\n- [ ] Prufer coding\n- [ ] Strongly Connected Components\n- [ ] Subgraph isomorphism problem\n- [ ] Tarjan's strongly connected components\n- [ ] Topologically sort the nodes of a graph\n- [ ] Transitive Closure Problem\n- [ ] TrustRank\n- [ ] Uniform-cost search\n- [ ] Warnsdorff's rule - Knight's tour heuristic\n\n## Linear Algebra\n\n- [ ] Biconjugate gradient method\n- [ ] Freivalds' algorithm\n- [ ] Gaussian Elimination\n- [ ] Kraut \u0026 Determinant\n- [ ] Matrix Inverse\n- [x] Matrix Multiplication - Normal\n- [x] Matrix Transposition\n- [ ] Rank of a matrix\n- [ ] Strassen Matrix Multiplication\n- [ ] Symbolic Cholesky decomposition\n\n## Machine Learning\n\n- [ ] Apriori Algorithm\n- [ ] AdaBoost\n- [ ] C4.5 algorithm\n- [ ] CART (Classification and Regression Tree)\n- [ ] Chi-square automatic interaction detection (CHAID)\n- [ ] Eclat Algorithm\n- [ ] Genetic Algorithm\n- [ ] Hidden Markov Model\n- [ ] Histogram of Oriented Gradients\n- [ ] ID3 algorithm\n- [ ] K-means Clustering\n- [ ] K Nearest Neighbours\n- [ ] Linear Discriminant Analysis\n- [ ] Linear Regression\n- [ ] Logistic Regression\n- [ ] Markov Chains\n- [ ] Monte Carlo Tree Search\n- [ ] Partial Least Squares Regression\n- [ ] Polynomial Regression\n- [ ] Principal Component Analysis\n- [ ] Random Forest Classifier\n- [ ] Random Forest Regressor\n- [ ] Q Learning\n- [ ] Self organizing map\n- [ ] Stemming algorithm\n- [ ] Support Vector Machine\n\n## Number Theory\n\n- [ ] ACORN Pseudorandom Number Generator\n- [ ] Addition chain exponentiation\n- [ ] AKS primality test\n- [ ] Armstrong Number\n- [ ] Baillie-PSW primality test\n- [ ] Binary Exponentiation\n- [ ] Blum Blum Shub Pseudorandom Number Generator\n- [ ] Booth's Multiplication Algorithm\n- [ ] Chakravala method\n- [ ] Chinese Remainder Problem\n- [ ] Collatz Sequence\n- [ ] Congruence of squares\n- [ ] Coprimality Check\n- [ ] Dixon's Algorithm\n- [ ] Euler Totient Function\n- [ ] Euclid's Algorithm\n- [ ] Extended Euclidean Algorithm\n- [ ] Factorial Modulo P\n- [ ] Factorials (Iterative)\n- [ ] Fermat's Factorization method\n- [ ] Fermat's Last Theorem\n- [ ] Fermat Primality test\n- [ ] Finding Full Reptend Primes\n- [ ] General Number Field Sieve\n- [ ] Karatsuba algorithm\n- [ ] Least Common Multiple\n- [ ] Lagged Fibonacci Pseudorandom Number Generator\n- [ ] Lenstra elliptic curve factorization\n- [ ] Linear Congruential Pseudorandom Number Generator\n- [ ] Linear Diophantine Equations\n- [ ] Logarithmic Exponentiation\n- [ ] Lucas primality test\n- [ ] Mersenne Twister Pseudorandom Number Generator\n- [ ] Modular Multiplicative Inverse\n- [ ] Modular Exponentiation\n- [ ] Montgomery Multiplication\n- [ ] Number of divisors\n- [ ] Odlyzko-Schonhage algorithm\n- [ ] P-adic valuation\n- [ ] Pollard's p - 1 algorithm\n- [ ] Pollard's rho algorithm\n- [ ] Prime Factors below N\n- [ ] Prime Factorizarion\n- [ ] Primality Check\n- [ ] Primitive Roots\n- [ ] Quadratic Sieve\n- [ ] Rabin Miller Primality Test (Deterministic)\n- [ ] Rabin Miller Primality Test (Probabilisitic)\n- [ ] Schonhage-Strassen algorithm\n- [ ] Shor's Algorithm\n- [ ] Sieve of Atkin\n- [ ] Sieve of Eratosthenes\n- [ ] Sieve of Sundaram\n- [ ] Special Number Field Sieve\n- [ ] Sum of Divisors\n- [ ] Toom-Cook multiplication\n- [ ] Tonelli-Shanks algorithm\n\n## Parsing\n\n- [ ] CYK parsing algorihm\n- [ ] LL Parsing\n- [ ] LR Parsing\n- [ ] Pratt Parsing\n- [ ] Recursive descent parsing\n- [ ] Shunting Yard algorithm\n\n## Sorting \u0026 Order Statistics\n\n- [ ] Bitonic Sort\n- [ ] Bogo Sort\n- [x] Bubble Sort\n- [ ] Bucket Sort\n- [ ] Burst Sort\n- [ ] Comb Sort\n- [x] Counting Sort\n- [ ] Cycle Sort\n- [ ] Flash Sort\n- [ ] Gnome Sort\n- [ ] Heap Sort\n- [x] Insertion Sort\n- [ ] Introselect\n- [ ] Intro Sort\n- [ ] K-order statistic\n- [x] Mergesort\n- [ ] Odd-even Sort\n- [ ] Pigeonhole Sort\n- [x] Quicksort\n- [ ] Quickselect\n- [x] Selection Sort\n- [ ] Shell Sort\n- [ ] Stooge Sort\n- [ ] Tim Sort\n- [ ] Tree Sort\n\n## Strings\n\n- [ ] Aho-Corasick string matching algorithm\n- [ ] Boyer-Moore String Search\n- [ ] Boyer-Moore-Horpspool String Search\n- [ ] Damerau-Levenshtein distance\n- [ ] Dice's coefficient\n- [ ] Hamming Distance\n- [ ] Jaro-Winkler distance\n- [ ] Krauss matching wildcards algorithm\n- [ ] Knuth-Morris-Pratt algorithm\n- [ ] Levenshtein edit distance\n- [ ] Longest Common Prefix Array\n- [ ] Longest Repeated Substring\n- [ ] Lyndon factorization\n- [ ] Manacher's algorithm\n- [ ] Rabin-Karp string matching algorithm\n- [ ] Radix Sort\n- [ ] Rich Salz' wildmat\n- [ ] String matching with finite automata\n- [ ] Suffix Array\n- [ ] Suffix Automaton\n- [ ] Suffix Tree\n- [ ] Trie\n- [ ] Ukkonen's algorithm\n- [ ] Wavelet tree\n- [ ] Z Function\n- [ ] Zhu-Takaoka string matching\n\n## Miscellaneous\n\n- [ ] 2-SAT\n- [ ] Balanced Ternary\n- [ ] Binary Search\n- [ ] Cellular Automata\n- [ ] Dekker's algorithm\n- [ ] Doomsday algorithm\n- [ ] Easter day algorithms\n- [ ] Fibonacci Search\n- [ ] Floyd-Rivest algorithm\n- [x] Fractional Knapsack Problem\n- [x] Generating subsets\n- [x] Gray code\n- [ ] Hill Climbing Search\n- [ ] Hopcroft's algorithm\n- [ ] Jump Search\n- [ ] Integration by Simpson's Formula\n- [ ] Interpolation Search\n- [ ] Kleene's algorithm\n- [ ] Meet in the middle\n- [ ] Mo's algorithm\n- [ ] Newton's algorithm for finding roots\n- [ ] Powerset construction (aka Rabin-Scott subset construction)\n- [ ] Predictive Search\n- [ ] Range XOR\n- [ ] Simplex Algorithm\n- [ ] Simulated Annealing\n- [ ] Sqrt decomposition\n- [ ] Tabu Search\n- [ ] Ternary Search\n- [ ] Thompson's construction algorithm\n- [ ] Tomasulo algorithm\n- [ ] Tracing garbage collection\n- [ ] Uniform binary search\n- [ ] Xor swap algorithm\n- [ ] Zeller's congruence\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fst3v3nmw%2Frust-algorithms","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fst3v3nmw%2Frust-algorithms","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fst3v3nmw%2Frust-algorithms/lists"}