Rishabh672003 / DSA-notes

Notes for DSA in C++

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DSA-notes

This repository contains my notes on Data Structures and Algorithms (DSA) that I am creating as I learn and practice DSA concepts. The purpose of creating these notes is to help myself in revising and reinforcing the concepts and to share them with anyone who might find them useful.

Table of Contents

Data Structures

Arrays

  • Introduction to arrays
  • Operations on arrays (insertion, deletion, searching, etc.)
  • 1D and 2D arrays
  • Time and space complexity analysis of array operations

Strings

  • Introduction to strings
  • Operations on strings (concatenation, comparison, searching, etc.)
  • String manipulation algorithms (reversal, palindrome check, anagram check, etc.)
  • Pattern matching algorithms (Naive, Rabin-Karp, Knuth-Morris-Pratt, etc.)
  • Time and space complexity analysis of string algorithms

Linked Lists

  • Introduction to linked lists
  • Singly linked lists
  • Doubly linked lists
  • Circular linked lists
  • Operations on linked lists (insertion, deletion, searching, etc.)
  • Time and space complexity analysis of linked list operations

Stacks

  • Introduction to stacks
  • Operations on stacks (push, pop, peek, etc.)
  • Array and linked list implementation of stacks
  • Applications of stacks

Queues

  • Introduction to stacks
  • Operations on queues (enqueue, dequeue, peek, etc.)
  • Array and linked list implementation of queues
  • Applications of stacks

Trees

  • Introduction to trees
  • Binary trees
  • Binary search trees
  • AVL trees
  • Heap trees
  • Red-Black Trees
  • B-Tree
  • Tree traversal (preorder, inorder, postorder, level order)
  • Operations on trees (insertion, deletion, searching, etc.)
  • Time and space complexity analysis of tree operations

Graphs

  • Introduction to graphs
  • Types of graphs (undirected, directed, weighted, unweighted, etc.)
  • Graph representation (adjacency matrix, adjacency list)
  • Graph traversal (DFS, BFS)
  • Shortest path algorithms (Dijkstra's algorithm, Bellman-Ford algorithm)
  • Minimum spanning tree algorithms (Prim's algorithm, Kruskal's algorithm)

Algorithms

Searching

  • Linear search
  • Binary search
  • Interpolation search
  • Time and space complexity analysis of search algorithms

Sorting

  • Bubble sort
  • Selection sort
  • Insertion sort
  • Merge sort
  • Quick sort
  • Heap sort
  • Counting sort
  • Radix sort
  • Time and space complexity analysis of sorting algorithms
  • Comparison of sorting algorithms

Recursion

  • Introduction to recursion
  • Recursive algorithms (factorial, Fibonacci, etc.)
  • Time and space complexity analysis of recursive algorithms
  • Recursive vs iterative algorithms

Dynamic Programming

  • Introduction to dynamic programming
  • Memorization and tabulation
  • Top-down and bottom-up approaches
  • Examples of dynamic programming problems (knapsack problem, longest common subsequence, etc.)
  • Time and space complexity analysis of dynamic programming algorithms

Greedy Algorithms

  • Introduction to greedy algorithms
  • Greedy algorithm design techniques (activity selection, Huffman coding, etc.)
  • Examples of greedy algorithms (Dijkstra's algorithm, Kruskal's algorithm, etc.)
  • Time and space complexity analysis of greedy algorithms

Feel free to use these notes

About

Notes for DSA in C++


Languages

Language:C++ 100.0%