This repository contains the implementation of algorithms from the book "Introduction to Algorithms" by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein, commonly referred to as CLRS.
The algorithms are implemented in both Java and Python, in order to provide a comprehensive collection for developers comfortable with either language. This repository aims to serve as a helpful resource for those seeking to understand and practice the algorithms discussed in the book. Table of Contents
Installation and Setup
Algorithms Covered
Contributing
License
Installation and Setup
To run the Java implementations, ensure that you have Java Development Kit (JDK) installed on your system. You can download the JDK from the official Oracle website.
To run the Python implementations, ensure that you have Python installed on your system. You can download Python from the official Python website.
To set up the repository, follow these steps:
Clone the repository to your local machine using the following command:
[git clone https://github.com/MahyarFardin/CLRS-book-algorithms-.git](https://github.com/MahyarFardin/CLRS-Algoriothms)
Change to the cloned directory:
cd CLRS-Algoriothms
Navigate to the specific algorithm directory you wish to run:
cd <algorithm-directory>
Follow the instructions provided in the specific algorithm directory to run the code.
Algorithms Covered
The repository provides implementations of all of the algorithms discussed in the CLRS book. Some of the algorithms included are:
Sorting algorithms: Merge Sort, Quick Sort, Heap Sort Graph algorithms: Breadth-First Search (BFS), Depth-First Search (DFS), Dijkstra's Algorithm, Bellman-Ford Algorithm Divide and Conquer algorithms: Binary Search, Matrix Multiplication, Closest Pair Dynamic Programming algorithms: Fibonacci Sequence, Longest Common Subsequence, Knapsack Problem Greedy algorithms: Prim's Algorithm, Kruskal's Algorithm, Huffman Coding And many more!
Contributing
Contributions to this repository are welcome! If you wish to contribute to an algorithm implementation or improve an existing implementation, please follow these steps:
1- Fork the repository
2- Create a new branch with a descriptive name related to the algorithm or improvement
3- Make the necessary changes
4- Test your changes thoroughly
5- Commit and push the changes to your forked repository
6- Submit a pull request to the main repository
Please make sure to include a detailed description of the changes you made and any relevant information for reviewers. I would like to thank:
https://github.com/Amirreza-Afra & https://github.com/AmirMShebly
https://github.com/AliAbazari & https://github.com/jElhamm
for their restless efforts on this repository.
License
This repository is licensed under the MIT License. Feel free to use, modify, and distribute the code in this repository for personal or commercial purposes. We would appreciate it if you try to make this repo more interesting with your own programming language.