A collection of essential algorithms implemented from scratch for learning, practice, and performance benchmarking.
This repository aims to serve as a personal reference and interview prep library, covering topics from sorting and searching to advanced data structures.
- 📚 Clean, well-documented implementations of common algorithms
- ⚙️ Modular code organized by topic (Sorting, Searching, Recursion, etc.)
- 🧩 Suitable for interview prep, college assignments, or competitive programming
- 🧠 Implementations emphasize clarity, time complexity analysis, and edge cases
| Category | Algorithms Included |
|---|---|
| Sorting | Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort |
| Searching | Linear Search, Binary Search |
| Arrays | Reverse, Rotate, Max/Min, Two Sum |
| Recursion | Factorial, Fibonacci, Power, Permutations |
| Strings | Palindrome Check, Anagram, Subsequence |
| Data Structures | Stack, Queue, LinkedList, Binary Tree, BST |
// Example: Using BubbleSort.java
int[] arr = {5, 3, 8, 4, 2};
BubbleSort.sort(arr);
System.out.println(Arrays.toString(arr)); // Output: [2, 3, 4, 5, 8]
(Adjust for your programming language — Java, Python, C++, etc.)- Language: Java (or specify your main language)
- IDE: VS Code / IntelliJ / Eclipse
- Version Control: Git & GitHub
- Fork this repo
- Create a new branch
- Add your algorithm implementation
- Open a Pull Request All contributions are welcome — from beginner-friendly sorting algorithms to advanced graph or dynamic programming problems.
This project is licensed under the MIT License — feel free to use and modify it for personal or educational purposes.
Inspired by: GeeksforGeeks, LeetCode, Introduction to Algorithms (CLRS)
🧩 “An algorithm must be seen to be believed.” – Donald Knuth