Skip to content

sudo-Satvik/java-dsa

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Data Structures and Algorithms (DSA) Syllabus

1. Introduction to DSA (done)

  • Importance of Data Structures and Algorithms (done)
  • Time and Space Complexity Analysis (Asymptotic Notations, Big-O) (done)
  • Types of Algorithmic Paradigms
    • Divide and Conquer
    • Greedy Algorithms
    • Dynamic Programming
    • Backtracking
    • Branch and Bound

2. Linear Data Structures

2.1 Arrays (done)

  • Definition and Types of Arrays (1D, 2D, Multi-dimensional)
  • Array Operations: Insertion, Deletion, Access, Update
  • Dynamic Arrays (ArrayList in Java, Vectors in C++)

2.2 Strings (need to revise!)

  • Definition and Basics of String
  • String Operations: Concatenation, Substring, Length, Search, Comparison
  • String Algorithms: String Reversal, Palindrome, Anagram Detection, Character Frequency Count, String Matching

2.3 Linked Lists (done)

  • Singly Linked List: Insertion, Deletion, Traversal
  • Doubly Linked List: Insertion, Deletion, Traversal
  • Circular Linked List
  • Applications of Linked Lists (Queue Implementation, Polynomial Representation)

2.4 Stacks (done)

  • Definition and Operations: Push, Pop, Peek
  • Stack Implementation: STL(Standard Template Library)/Collection Framework, Array-based, Linked List-based
  • Applications (Expression Evaluation, Balancing Parentheses, Recursion)

2.5 Queues (in progress...)

  • Definition and Operations: Enqueue, Dequeue, Front, Rear
  • Types of Queues: Simple Queue, Circular Queue, Double Ended Queue (Deque)
  • Applications (Scheduling, Resource Management)

3. Non-Linear Data Structures

3.1 Trees

  • Binary Tree: Structure, Operations (Insertion, Deletion, Traversal)
  • Binary Search Tree (BST): Insertion, Deletion, Search
  • Balanced Trees: AVL Tree, Red-Black Tree
  • Heap Trees: Min-Heap, Max-Heap, Heap Operations (Insert, Delete)
  • Tree Traversals: Pre-order, In-order, Post-order, Level-order
  • Applications (Expression Trees, Decision Trees, Priority Queues)

3.2 Graphs

  • Graph Representation: Adjacency Matrix, Adjacency List
  • Graph Traversals: Depth-First Search (DFS), Breadth-First Search (BFS)
  • Shortest Path Algorithms: Dijkstra’s, Bellman-Ford, Floyd-Warshall
  • Minimum Spanning Tree: Prim’s, Kruskal’s Algorithms
  • Topological Sort and Cycle Detection
  • Applications (Network Routing, Social Networks, GPS Navigation)

3.3 Hash-based Data Structures

  • Hashing: Hash Functions, Collision Resolution
  • Hash Table: Chaining, Open Addressing (Linear Probing, Quadratic Probing, Double Hashing)
  • Applications (Dictionary, Database Indexing)

4. Advanced Data Structures

4.1 Trie (Prefix Tree)

  • Structure and Operations (Insert, Search, Delete)
  • Applications (Autocomplete, IP Routing, Dictionary)

4.2 Segment Tree

  • Structure and Operations
  • Range Queries and Updates
  • Applications (Range Sum Queries, Range Minimum Queries)

4.3 Fenwick Tree (Binary Indexed Tree)

  • Structure and Operations
  • Applications (Prefix Sum Queries)

4.4 Disjoint Set Union (Union-Find)

  • Operations: Union, Find
  • Applications (Network Connectivity, Kruskal’s Algorithm)

5. Algorithms

5.1 Sorting Algorithms

  • Basic Sorting: Bubble Sort, Selection Sort, Insertion Sort
  • Efficient Sorting: Merge Sort, Quick Sort, Heap Sort
  • Linear Sorting: Radix Sort, Counting Sort, Bucket Sort
  • Applications (Sorting Large Data, External Sorting)

5.2 Searching Algorithms

  • Linear Search
  • Binary Search
  • Interpolation Search
  • Exponential Search
  • Applications (Finding Elements in Sorted Arrays)

5.3 Graph Algorithms

  • DFS (Depth-First Search)
  • BFS (Breadth-First Search)
  • Dijkstra’s Algorithm for Shortest Path
  • Bellman-Ford Algorithm
  • Floyd-Warshall Algorithm for All-Pairs Shortest Paths
  • Prim’s Algorithm and Kruskal’s Algorithm for Minimum Spanning Tree

5.4 Dynamic Programming

  • Knapsack Problem (0/1 Knapsack, Fractional Knapsack)
  • Longest Common Subsequence (LCS)
  • Longest Increasing Subsequence (LIS)
  • Matrix Chain Multiplication
  • Fibonacci Series (Recursive, Iterative, DP)
  • Applications (Optimal Substructure, Overlapping Subproblems)

5.5 Greedy Algorithms

  • Activity Selection
  • Huffman Encoding
  • Fractional Knapsack
  • Job Sequencing with Deadlines
  • Applications (Optimal Solutions with Local Choices)

5.6 Backtracking

  • N-Queens Problem
  • Sudoku Solver
  • Subset Sum Problem
  • Hamiltonian Path and Cycle
  • Graph Coloring
  • Applications (Puzzles, Optimized Search Problems)

5.7 Divide and Conquer

  • Merge Sort
  • Quick Sort
  • Strassen’s Matrix Multiplication
  • Applications (Divide Large Problems into Simpler Subproblems)

5.8 Bit Manipulation

  • Basic Bitwise Operations (AND, OR, XOR, NOT, Left/Right Shift)
  • Applications (Checking Odd/Even, Counting Set Bits, Bit Masking)

5.9 Sliding Window Technique

  • Fixed Size Window: Max/Min Sum, Subarray Problems
  • Variable Size Window: Longest Substring Problems

5.10 Two Pointer Technique

  • Pair Problems (Find Pair with Given Sum, Triplet Sum)
  • Sorted Array Problems (Find Specific Elements)

6. Applications of Data Structures and Algorithms

  • File Systems
  • Databases
  • Network Routing Algorithms
  • Operating Systems (Memory Management, Process Scheduling)
  • Compilers (Syntax Tree, Parsing)
  • Web Crawling
  • Machine Learning (Data Preprocessing, Decision Trees)

7. I'm Preparing from (recommended):

About

This repository is dedicated to my learning journey of Data Structure and Algorithm with Java

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages