This repository contains implementations of various data structures and algorithms in different programming languages. It serves as a reference and learning resource for understanding fundamental concepts in computer science.
Understanding data structures and algorithms is essential for every software engineer and computer scientist. This repository aims to provide implementations of commonly used data structures and algorithms in a variety of programming languages, along with explanations and examples.
The following data structures are implemented in this repository:
- Linked List
- Stack
- Queue
- Binary Tree
- Binary Search Tree
- Graph
- Hash Table
- Heap
- Trees
- ...
Each data structure is organized into its own directory and includes the implementation code, along with explanations and examples of usage.
The following algorithms are implemented in this repository:
- Sorting Algorithms (Bubble Sort, Insertion Sort, Merge Sort, Quick Sort, etc.)
- Searching Algorithms (Linear Search, Binary Search, Depth-First Search, Breadth-First Search, etc.)
- Dynamic Programming Algorithms
- Graph Algorithms (Dijkstra's Algorithm, Prim's Algorithm, Kruskal's Algorithm, etc.)
- String Algorithms (String Matching, String Parsing, etc.)
- ...
.
├── Algorithms
│ ├── Searching
│ │ ├── BinarySearch.java
│ │ ├── BreadthFirstSearch
│ │ │ ├── Graph.java
│ │ │ ├── Main.java
│ │ │ └── Node.java
│ │ ├── DepthFirstSearch
│ │ │ ├── Graph.java
│ │ │ ├── Main.java
│ │ │ └── Node.java
│ │ ├── InterpolationSearch.java
│ │ ├── LinearSearch.java
│ │ └── SimpleBinarySearch.java
│ └── Sorting
│ ├── BubbleSort.java
│ ├── HeapSort.java
│ ├── InsertionSort.java
│ ├── MergeSort.java
│ ├── PigeonholeSort.java
│ ├── QuickSort.java
│ ├── Recursion.java
│ ├── SelectionSort.java
│ └── TournamentSort.java
├── DataStructures
│ ├── DynamicArray.java
│ ├── Graph
│ │ ├── AdjecencyList
│ │ │ ├── Graph.java
│ │ │ ├── Main.java
│ │ │ └── Node.java
│ │ └── AdjecencyMatrix
│ │ ├── Graph.java
│ │ ├── Main.java
│ │ └── Node.java
│ ├── LinkedLists.java
│ ├── PriorityQueues.java
│ ├── Queues.java
│ ├── Stacks.java
│ ├── Trees
│ │ └── BinarySearchTree
│ │ ├── Main.java
│ │ ├── Node.java
│ │ └── binarySearchTree.java
│ └── hashtable.java
├── LICENSE
├── Misc
│ ├── LinkedListMethod2.java
│ ├── LinkedvsArrayList.java
│ ├── PigeonholeSort.java
│ └── TournamentSort.java
├── README.md
├── SECURITY.md
└── TimeComplexity & Big(O)
├── Complexity.java
└── cheatsheet.png
This project is licensed under the MIT License.
Contributions are welcome! If you'd like to contribute to this repository, feel free to submit a pull request with your changes. Please ensure that your code follows the existing style and conventions, and include appropriate documentation and test cases.