Skip to content

Latest commit

 

History

History
117 lines (97 loc) · 4.04 KB

README.md

File metadata and controls

117 lines (97 loc) · 4.04 KB

Data Structures and Algorithms

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.

GitHub repo size

Contents

  1. Introduction
  2. Data Structures
  3. Algorithms
  4. Contributing
  5. License
  6. Project Structure

Introduction

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.

Data Structures

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.

Algorithms

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.)
  • ...

Project Structure

.
├── 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

License

This project is licensed under the MIT License.

Contributing

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.