Welcome to the Design and Analysis of Algorithms (DAA) project! This repository contains implementations of various data structures and algorithms, along with their analyses and applications.
- Requirements
- Getting Started
- Introduction
- Tree Algorithms
- Graph Algorithms
- Hashing Algorithms
- Sorting Algorithms
- Search Algorithms
- Optimization Algorithms
- Contributing
- A C++ compiler such as GCC or Clang
- Clone this repository to your local machine:
git clone https://github.com/AsjidAle/DSA.git
- Change to the project directory:
cd DSA
- You're there Now go to file your choice, compile and execute
- Binary Search Tree
- Self Balancing Tree
- AVL Tree
- AVL+ Tree
- B Tree
- B+ Tree
- AVL B Tree
- Red-Black Tree
- Dancing Tree
- Cartesian Tree
- Topological Sort
- Fusion Tree
- Min Heap
- Max Heap
- Splay Tree
- Interval Tree
- Link/Cut Tree
- Travelling Salesman Problem
- Brute Force
- Dynamic Programming
- Genetic Algorithim
- Minimum Spanning Tree
- Prim's Algorithm
- Kruskal's Algorithm
- Graph Traversal
- Depth-First Search (DFS)
- Depth-Limited Search (DLS)
- Breadth-First Search (BFS)
- Best-First Search (BFS)
- Shortest Path
- Randomized Shortest Path
- Dijkstra's Algorithm
- Bellman-Ford Algorithm
- Huffman Coding
- Ant Colony Optimization
- Bridges Algorithm
- Parallel Graph Algorithms
- Parallel Breadth-First Search
- Parallel Depth-First Search
- Parallel Shortest Path Algorithms
- Hash Table
- Collision Resolution
- Linear Probing
- Quadratic Probing
- Double Hashing
- Universal Hashing
- Bloom Filter
- Comparison-Based Sorting
- Heap Sort
- Merge Sort
- Quick Sort
- Insertion Sort
- Bubble Sort
- Block Sort
- Cycle Sort
- Shell Sort
- Comb Sort
- Gnome Sort
- Gravity Sort
- Intro Sort
- Odd-Even Sort
- Bitonic Sort
- Library Sort
- Tim Sort
- Non-Comparison-Based Sorting
- Radix Sort (LSD and MSD)
- Pigeonhole Sort
- Bucket Sort
- Counting Sort
- Linear Search
- Binary Search
- Knapsack Problem
- Genetic Algorithm
- Simulated Annealing
- Constraint Satisfaction Problem
Contributions are welcome! If you have ideas for additional algorithms, optimizations, or improvements to existing implementations, feel free to open an issue or submit a pull request. Please follow the established coding style and guidelines when contributing.
To contribute to the project:
- Fork the repository.
- Create a new branch.
- Make your changes and test them.
- Submit a pull request.
Please ensure your code follows the project's coding style and includes tests for new features or bug fixes.
- Asjid Ali (asjidale@gmail.com)
- Namluix (namluix@gmail.com)
- Moizna Zaheer (Moizna Zaheer)
Feel free to reach out to me with any questions or issues.