This repository showcases the work completed during the Algorithms & Data Structures for Data Science course, focusing on implementing classic algorithms and exploring Python's data structures in depth. The goal was to build a strong foundation by understanding how these algorithms and structures work from the ground up.
The repository contains:
- Development of key sorting algorithms, search algorithms from the ground up.
- Exercises aimed at uncovering the mechanics behind Python's data structures and their associated methods.
- Hands-on problem-solving using custom implementations, with a focus on meeting strict time complexity requirements and enhancing code performance.
- Practical Experience: Building algorithms like sorting and searching from scratch clarifies their inner workings and core principles.
- Efficiency Focus: Tackling problems within defined constraints enhances comprehension of algorithm performance and its implications in real-world scenarios.
- In-Depth Understanding: Although Python provides highly optimized, ready-made solutions, implementing these structures manually unveils the complexities of their design and functionality.
| Category | Algorithm/Method | Description |
|---|---|---|
| Sorting Algorithms | - Selection Sort | Sorts by repeatedly finding the minimum and swapping it. |
| - Insertion Sort | Builds the sorted list one element at a time. | |
| - Quick Sort | Divides and conquers using partitioning. | |
| - Merge Sort | Sorts by dividing the list and merging it. | |
| - Quick Select | Finds the k-th smallest element efficiently. | |
| Heap Methods | - Open Addressing (Linear Probing) | Resolves collisions by linearly searching for the next available slot. |
| - Hashing with Chains | Uses linked lists to manage collisions. | |
| Binary Search Tree | - Basic implementation and operations | Implements a tree structure for efficient searching and sorting. |
Understanding the core principles behind algorithms and data structures is crucial for writing optimized and efficient code. This repository serves as a toolkit for exploring the building blocks of computer science while improving your problem-solving skills.
Feel free to explore and learn! π