diff --git a/README.md b/README.md index fa00229..658efa9 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,47 @@ # Data Structures & Algorithms -Algorithms and data structures are fundamental to efficient code and good software design. Creating and designing excellent algorithms is required for being an exemplary programmer. This repository's goal is to demonstrate how to correctly implement common data structures and algorithms in the simplest and most elegant ways. +- ### **Data Structures** + + Data structures are ways to organize, store, and manage data in a computer so that it can be accessed and modified efficiently. They are the foundation for designing efficient algorithms and play a crucial role in computer science. + + Common data structures include: + + - **Arrays**: A collection of elements identified by index or key. + + - **Linked Lists**: A linear collection of data elements where each element points to the next. + + - **Stacks**: A collection of elements that follows the Last In First Out (LIFO) principle. + + - **Queues**: A collection of elements that follows the First In First Out (FIFO) principle. + + - **Trees**: A hierarchical structure with nodes, with a root node and child nodes forming a parent-child relationship. + + - **Graphs**: A collection of nodes connected by edges. + Hash Tables: A data structure that provides fast access to elements by using a hash function to map keys to values. + +- ### **Algorithms** + + Algorithms are step-by-step procedures or formulas for solving a problem or completing a task. In computer science, an algorithm is a set of instructions that take an input and transform it into an output through a series of well-defined steps. + + Key aspects of algorithms include: + + - **Correctness**: Ensuring the algorithm produces the correct output for all possible inputs. + + - **Efficiency**: Minimizing the time and space resources required to execute the algorithm. + + - **Complexity**: Analyzing the time complexity (how the runtime increases with input size) and space complexity (how the memory usage increases with input size). + +In this repository I tried to implement a few of the data structures and some searching and sorting algorithms using different programming and scripting languages, feel free to check each one of them + +# Direct Access + +- [Tree Data Structure](https://github.com/amaitou/DataStructures/tree/main/tree) +- [Stack Data Structure](https://github.com/amaitou/DataStructures/tree/main/stack) +- [Linked List Data Structure](https://github.com/amaitou/DataStructures/tree/main/linkedlist) +- [Queue Data Structure](https://github.com/amaitou/DataStructures/tree/main/queue) +- [Sorting ALgorithms](https://github.com/amaitou/DataStructures/tree/main/sort) +- [Searching ALgorithms](https://github.com/amaitou/DataStructures/tree/main/search) ## Contact Me