- Introduction
- Objectives
- Features
- Technologies Used
- Installation
- Usage
- Algorithms Implemented
- Contributing
This project is an implementation of various classical algorithms in Java, including sorting, searching, and graph algorithms. It focuses on both the correctness and performance analysis of algorithms, showcasing the time and space complexities. The project is useful for educational purposes, helping students and developers understand how different algorithms function and their performance characteristics.
- Implement classical algorithms for sorting, searching, and graph traversal.
- Provide a platform to analyze time and space complexities.
- Demonstrate algorithmic design paradigms such as Divide and Conquer, Greedy algorithms, and Dynamic Programming.
- Modular Java code for a wide range of algorithms.
- Detailed performance and complexity analysis.
- Easy-to-use interface to test algorithms with custom inputs.
- Programming Language: Java
- IDE: IntelliJ IDEA / Eclipse / NetBeans (or any Java-compatible IDE)
- Testing: JUnit (for unit testing algorithms)
- Build Tool: Maven / Gradle (optional)
-
Clone the repository:
git clone https://github.com/yourusername/algorithm-analysis-java.git
-
Open the project in your preferred Java IDE (IntelliJ IDEA, Eclipse, etc.).
-
Compile and run the project:
- If using Maven:
mvn clean install mvn exec:java
- If using an IDE, locate
Main.java
and run it.
- If using Maven:
- Open the
Main.java
file to choose which algorithm to execute. - You can call individual algorithms from the main file to run specific operations like sorting, searching, or solving graph problems.
- Test different input sizes to observe time complexity behaviors.
- Bubble Sort: Implementation in
Buble_Sort.java
- Merge Sort: Implementation in
MergeSort.java
- Quick Sort: Implementation in
QuickSort.java
- Selection Sort: Implementation in
Selection_Sort.java
- Binary Search (Iterative): Implementation in
binary_search.java
- Binary Search (Recursive): Implementation in
binary_search_recursive.java
- Floyd-Warshall Algorithm: Implementation in
floyds.java
- Warshall’s Algorithm: Implementation in
warshall.java
- Prim’s Algorithm: Implementation in
Prims.java
- Kruskal’s Algorithm: Implementation in
kruskal.java
- Topological Sort: Implementation in
Topological_Sort.java
andTopologicalSort.java
- Knapsack Problem: Implementation in
knap.java
andKnapsack.java
- Coin Change Problem: Implementation in
CoinChange.java
- Min-Max Algorithm: Implementation in
MinMax.java
Contributions are welcome! If you would like to add more algorithms, optimize the existing ones, or improve the project structure, feel free to fork the repository and create a pull request.