This repository provides a collection of fundamental computing algorithms designed to solve a variety of problems across different domains in computer science. The algorithms are implemented in Python, with detailed explanations, and cover both basic and advanced topics. Whether you're learning algorithms for the first time or looking for efficient implementations, this repository aims to provide practical solutions and insights for a wide range of computational challenges.
- Algorithm Implementations: Efficient implementations of classic algorithms in various domains, including sorting, searching, graph theory, dynamic programming, and more.
- Well-Commented Code: Each algorithm is implemented with clear, concise comments to ensure understanding and ease of use.
- Optimized Solutions: Focus on providing solutions that are both efficient in terms of time and space complexity.
- Real-World Applications: Algorithms are chosen based on their relevance to real-world problems and their practical utility.
- Test Cases: Includes a set of test cases to validate the correctness of each algorithm implementation.
- Sorting Algorithms: QuickSort, MergeSort, BubbleSort, InsertionSort, SelectionSort, etc.
- Searching Algorithms: Binary Search, Linear Search, and more.
- Graph Algorithms: Dijkstra’s Algorithm, Bellman-Ford, DFS, BFS, etc.
- Dynamic Programming: Fibonacci Series, Knapsack Problem, Longest Common Subsequence, etc.
- Greedy Algorithms: Fractional Knapsack, Huffman Encoding, etc.
- Mathematical Algorithms: Prime Number Checking, GCD, LCM, etc.
- Miscellaneous: Backtracking, Divide and Conquer, etc.
To start using the algorithms in this repository, simply clone it to your local machine:
git clone https://github.com/MahmoudHanyFathalla/Computing-Algorithms.git
You can run the individual algorithm scripts directly or integrate them into your own projects.
Each algorithm is implemented as a separate Python script. For example, to run a sorting algorithm:
python sorting/quick_sort.py
Feel free to modify and adapt the code as needed for your own use cases.
Contributions are always welcome! If you'd like to add an algorithm, improve an existing one, or provide feedback, feel free to fork the repository, make changes, and create a pull request.
This project is open-source and available under the MIT License.