Algorithms
A collection of various useful algorithms and data structures along with their Java implementations.
Install / Use
/learn @jpa99/AlgorithmsREADME
Algorithms
This respository is a collection of various useful algorithms and data structures along with their Java implementations, intended for educational use. This is a work in progress, so some algorithms may not be included. All files that have been added have been tested extensively and should be accurate, readable, and efficient. Feel free to suggest any algorithms that you'd like to see implemented in the future. Don't hesitate to contact me with any questions, concerns, or feedback (my contact information is at the bottom of this file). If you found this repository helpful, I'd love to know :)
Table of Contents
- Algorithms
- Resources
Graph
- Graph Traversal
- Breadth-First Search
- Depth First Search
- Shortest Path
- Dijkstra's Algorithm
- Bellman-Ford
- Floyd-Warshall
- Johnson's Algorithm
- Minimum Spanning Tree
- Kruskal's Algorithm
- Prim's Algorithm
- Network Flow
- Karger's Algorithm
- Push-Relabel
- Edmonds-Karp
- Ford-Fulkerson
- Tarjan's Algorithm
- Topological Sort
- Strongly Connected Components
Dynamic Programming
- 0-1 Knapsack
- Edit (Levenshtein) Distance
- Longest Increasing Subsequence
- Longest Common Subsequence
- Maximum Subset Sum
Sorting
- Timsort
- Radix Sort
- Counting Sort
- Quicksort
- Heapsort
- Mergesort
- Insertion Sort
- Bubble Sort
- Selection Sort
- Bogosort
Searching
- Linear
- Binary
- ith Order Statistic
- Sort Select
- Randomized Select
- Heapselect
- Quickselect
Strings
- String Searching
- Aho-Corasick
- Z Algorithm
- Knuth-Morris-Pratt
- Boyer-Moore
- Rabin-Karp
- Brute Force
Math/Number Theory
- Fibonacci
- Binet's Formula
- Iterative
- Recursive (DP)
- Matrix Exponentiation
- Fast Doubling
- Euclid's Algorithm
- Fast Fourier Transform
- Primality Testing
- Naive
- Sieve of Erastothenes
- Miller-Rabin
- Karatsuba's Algorithm
- Fast Exponentiation
- Strassen's Algorithm
Computational Geometry
- Convex Hull
- Graham Scan
- Jarvis March
Optimization
- Naive Optimization
- Simplex (LP)
- Simulated Annealing
- Genetic Algorithms
- Combinatoric Algorithms
Miscellaneous
- Fisher-Yates Shuffle
- Kadane's Algorithm
- Subarray Inversions
Data Structures
- Graph
- Tree
- Binary Tree
- Fenwick Tree (Binary Indexed Tree)
- Red-Black Tree
- AVL Tree
- B-Tree
- Suffix Tree
- Trie
- Hash Table
- Hash Map
- Stack
- Queue
- List
- LinkedList
Project Euler
Interesting math problems that can be solved computationally; full problem set available here. The Project Euler folder contains the full inventory of problems I've implemented with it's own table of contents here.
Google Code Jam
Competitive programming style problems from previous competitions. The Google Code Jam folder contains the full inventory of problems I've implemented with it's own table of contents here.
USACO
Algorithmic problems from past USA Computing Olympiad contests, check out the full problem database. The USACO folder contains the full inventory of problems I've implemented with it's own table of contents here.
Developed By
- Joel P. Abraham - joelpabraham@gmail.com
Related Skills
proje
Interactive vocabulary learning platform with smart flashcards and spaced repetition for effective language acquisition.
YC-Killer
2.7kA library of enterprise-grade AI agents designed to democratize artificial intelligence and provide free, open-source alternatives to overvalued Y Combinator startups. If you are excited about democratizing AI access & AI agents, please star ⭐️ this repository and use the link in the readme to join our open source AI research team.
research_rules
Research & Verification Rules Quote Verification Protocol Primary Task "Make sure that the quote is relevant to the chapter and so you we want to make sure that we want to have it identifie
groundhog
398Groundhog's primary purpose is to teach people how Cursor and all these other coding agents work under the hood. If you understand how these coding assistants work from first principles, then you can drive these tools harder (or perhaps make your own!).
