/DSA

Learn and practice the entire DSA in a simple and structured way with this C++ repository.

Primary LanguageC++MIT LicenseMIT

πŸ“‘ Table of Contents

πŸ’‘ About

Greetings! In this repository I'm dedicated to mastering problem-solving approaches & techniques, building a solid theoretical foundation and exploring a variety of data structures & algorithms using the C++ programming language. With a commitment to practical application, I explore these critical components of computer science, continuously enhancing my skills and knowledge along the way.

πŸ“ Repository Structure

This list provides a straightforward overview of the repository's contents. For a better navigation, сompleted projects (but still can receive updates) are marked with βœ… and ones currently under development with πŸ”„. The order in which they are arranged primarily serves the purpose of facilitating learning, namely, starting with the upper projects enables better comprehension of the subsequent ones. Please note, that this structure will remain dynamic and adaptable throughout its evolution.

The Structure:

  • Algorithms

    • Recursion
    • Sorting
    • Searching
    • RNG
      • RNG.md πŸ”„
      • Middle-Square Method πŸ”„
      • LCG (Linear Conguential Generator)
      • PCG (Permuted Congruential Generator)
      • Mersenne Twister
      • Xorshift
      • Xoshiro128
    • Tree Algorithms
      • TreeAlgorithms.md
      • Inorder Traversal
      • Preorder Traversal
      • Postoreder Traversal
      • Height Calculation
      • Size Calculation
      • LCA (Lowest Common Ancestor)
    • Graph Algorithms
      • GraphAlgorithms.md
      • DFS (Depth-First Search)
      • BFS (Breadth-First Search)
      • A*
      • Dijkstra's Algorithm
      • Bellman-Ford Algorithm
      • Prim's Algorithms
      • Kruskal's Algorithm
      • Floyd-Warshall Algorithm
    • DnC Algorithms
      • DnC.md
      • Strassen's Algorithm
      • Karatsuba Algorithm
      • Closest Pair of Points
    • Dynamic Algorithms
      • Knapsack
      • Coin Change
      • LCS (Longest Common Subsequence)
      • LIS (Lingest Increasing Subsequence)
    • Greedy Algorithms
      • Activity Selection
      • Fractional Knapsack
      • Huffman Coding
    • String Algorithms
      • StringAlgorithms.md
      • KMP (Knuth-Morris-Pratt)
      • Rabin-Karp
      • Boyer-Moore
      • Levenshtein Distance
      • Needleman-Wunsh Algorithm
      • RLE (Run-Length Encoding)
  • Data Structures

    • Array
    • Linked List
    • Queue
    • Stack
    • Tree
      • Tree.md
      • Binary Tree
      • BST (Binary Search Tree)
      • AVL Tree
      • Red-Black Tree
      • Splay Tree
      • B-Tree
      • B+ Tree
    • Graph
      • Graph.md
      • Undirected Graph
      • Directed Graph
      • Weighted Graph
      • Sparse Graph
      • Dense Graph
    • Heap
      • Heap.md
      • Binary Heap
      • Min Heap
      • Max Heap
      • Fibonacci Heap
      • Binomial Heap
    • Hash
      • Hash.md
      • Hash Table
      • Hash Map
      • Hash Set
      • Bloom filter
      • Cuckoo filter
    • String
      • String.md
      • String

🀝 Contributing

As my educational journey progresses, I may discover new areas of interest within data structures and algorithms. I welcome and value contributions from the community, as they greatly enrich my competence and knowledge in this domain. Whether it's code improvements, bug reports, suggestions for new topics or you are just interested in discussions on particular topics β€” feel free to reach out. Your input is highly appreciated indeed!

  • If you have any suggestions or ideas, please reach out via email, GitHube, LinkedIn or Telegram.
  • If you want to contribute code or other resources, please try to keep the existing style guidelines.
  • Please respect both your and mine time and effort.

πŸ“§ Contact Information

πŸ™ Credits

πŸ“š Books:

  • "Introduction to Algorithms" (3rd Edition) β€” by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein
    • A cornerstone resource that inspired me to learn DSA.
    • Provides comprehensive coverage of data structures and algorithms as technology.
  • "Grokking Algorithms: An Illustrated Guide for Programmers and Other Curious People" β€” by Aditya Bhargava
    • Translates complex concepts into simple, accessible explanations.
  • "Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching" (3rd Edition) β€” by Robert Sedgewick
    • Delves deep into core algorithmic concepts, emphasizing their implementation in the C++ programming language.
  • "Data Structures and Algorithm Analysis in C++" (4th Edition) β€” by Mark Allen Weiss
    • Serves as a great collection of C++ implementation examples along with step-by-step analyses.
  • "The Art of Computer Programming, Volume 1: Fundamental Algorithms" (3rd Edition) β€” by Donald Ervin Knuth
    • Explicitly describes computational background behind basic algorithms and data structures.
  • "The Art of Computer Programming, Volume 3: Sorting and Searching" (2nd Edition) β€” by Donald Ervin Knuth
    • Explicitly describes computational background behind sorting and searching algorithms.
  • "The Art of Computer Programming, Volume 2: Seminumerical Algorithms" (3rd Edition) β€” by Donald Ervin Knuth
    • Introduces to the idea of randomness in computer science, along with distributions and testing.
  • "Random Number Generators―Principles and Practices: A Guide for Engineers and Programmers" β€” by David Johnson
    • Provides an overview over modern RNG algorithms from practical perspective.

πŸŽ“ Courses:


πŸ’œ Special Thanks:

  • I am grateful to the CppCoreGuidelines for providing valuable insights on applying best practices to code, all while maintaining simplicity to convey ideas clearly and concisely.
  • Sheer gratitude to my university, the NTUU Igor Sikorsky KPI, for providing an environment where I had the privilege to connect with numerous ambitious individuals, who inspired me to strive for more.
  • Special thanks to ChatGPT for its continuous guidance & support on numerous topics.

πŸ” License

This project is licensed under the MIT License β€” see the LICENSE file for details.

License: MIT