Data Structures & Algorithms
DSA Part-1
- Introduction to Data Structures
- Asymptotic Notations: Big-O, Omega, and Theta Notations
- Time Complexity and Space Complexity Analysis of Algorithms
- 1D Arrays: Memory Representation and Address Calculation
- 2D Arrays: Row-Major and Column-Major Order Formulas and Numericals
- Array Operations: Traversal, Insertion, and Deletion with Algorithms
- Sparse Matrix: Triplet Representation and Linked Representation
- String Operations, Memory Storage, and Pattern Matching Basics
- Linear Search Algorithm and Complexity Analysis
- Binary Search Algorithm (Iterative and Recursive)
- Bubble Sort Algorithm and Optimization
- Selection Sort Algorithm and Step-by-Step Trace
- Insertion Sort Algorithm and In-Place Analysis
- Merge Sort Algorithm (Divide and Conquer Approach)
- Quick Sort Algorithm and Partitioning Methods
- Counting Sort Algorithm (Non-Comparison Sorting)
- Radix Sort Algorithm and Bucket Distribution
DSA Part-2
- Singly Linked List: Concept and Memory Allocation
- Singly Linked List: Insertion Operations
- Singly Linked List: Deletion Operations
- Singly Linked List: Reversal and Search Operations
- Doubly Linked List: Node Structure and Traversal
- Doubly Linked List: Insertion and Deletion Operations
- Circular Singly Linked List: Concept and Operations
- Circular Doubly Linked List: Concept and Operations
- Header Linked List: Grounded and Circular Header Lists
- Polynomial Representation and Addition using Linked List
DSA Part-3
- Stack Data Structure: Array Implementation
- Stack Implementation using Linked List
- Infix, Prefix, and Postfix Notations
- Infix to Postfix Conversion using Stack
- Infix to Prefix Conversion using Stack
- Evaluation of Postfix Expression using Stack
- Recursion and System Stack (Tower of Hanoi)
- Linear Queue: Array Implementation and Operations
- Drawbacks of Linear Queue and Memory Wastage
- Circular Queue: Array Implementation and Condition Checks
- Queue Implementation using Linked List
- Double-Ended Queue (Deque): Input and Output-Restricted
- Priority Queue: Concept, Array and Heap Representation
DSA Part-4
- Tree Data Structure: Terminology and Basic Concepts
- Binary Trees: Types and Properties
- Binary Tree Traversals: Inorder, Preorder, and Postorder
- Level Order Traversal of Binary Tree
- Binary Search Tree (BST): Concept and Search Operation
- Binary Search Tree (BST): Insertion and Deletion Operations
- AVL Tree: Concept and Balance Factor
- AVL Tree Rotations: LL, RR, LR, and RL Rotations
- Binary Heap: Min-Heap and Max-Heap Properties
- Heap Operations: Heapify, Insertion, and Deletion
- B-Tree: Properties, Structure, and Insertion
- B+ Tree: Structure and Comparison with B-Tree
DSA Part-5
- Graph Data Structure: Terminology and Types
- Graph Representation: Adjacency Matrix and Adjacency List
- Breadth First Search (BFS) Algorithm for Graphs
- Depth First Search (DFS) Algorithm for Graphs
- Hashing: Hash Tables and Hash Functions
- Collision Resolution: Open Addressing Techniques
- Collision Resolution: Separate Chaining Method
1D Arrays: Memory Representation and Address Calculation
1D Array (One-Dimensional Array) ek linear data structure hota hai jisme same data type (homogeneous) ke elements computer memory ke andar continuous (contiguous) memory blocks me store hote hain. Array me har element ko uske unique Index (Subscript) dwara directly access kiya ja sakta hai.
Key Characteristics of 1D Arrays
- Homogeneous Data: Array ke saare elements same data type (jaise saare integer ya saare float) ke hote hain.
- Contiguous Allocation: Memory me elements bagal-bagal (adjacent blocks) me place hote hain.
- Random Access [O(1)]: Kisi bhi element ka address direct calculation se mil jata hai, isliye indexing me constant time lagta hai.
- Fixed Size: Compile-time par define kiya gaya size runtime par automatically expand ya shrink nahi ho sakta (static memory allocation).
Memory Layout of 1D Array
Agar ek integer array int arr[5] declare kiya jaye, jahan har integer 4 bytes memory leta hai, aur pehle element ka starting memory address Base Address (B) = 1000 hai:
Index: 0 1 2 3 4
Element: +----+ +----+ +----+ +----+ +----+
| 25 | | 40 | | 12 | | 88 | | 95 |
+----+ +----+ +----+ +----+ +----+
Address: 1000 1004 1008 1012 1016
^ Base Address (B)
|<-- W=4 -->|
1D Array Address Calculation Formula
University exam numericals me kisi specific index i par rakhe element ka physical memory address calculate karne ka standard formula pucha jata hai:
Yahan parameters ka meaning:
- Base(A) / B: Array ke first element ka base memory address.
- W: Har single element ka memory size (in bytes/words). E.g., int ke liye 2 ya 4 bytes, float ke liye 4 bytes.
- i: Us element ka index jiska address calculate karna hai.
- Lower_Bound (LB): Array ka starting index (C/C++/Java me LB = 0 hota hai, lekin numericals me custom lower bound jaise
A[-5 ... 15]diya ja sakta hai).
Length / Total Elements Calculation:
Length = Upper_Bound (UB) - Lower_Bound (LB) + 1
Solved University Numerical
Question: Ek array A[10 ... 50] diya gaya hai jiska Base Address 1500 hai aur har element memory me 4 bytes leta hai. Element A[32] ka memory address calculate kijiye.
Solution:
- Base Address (B) = 1500
- Element Size (W) = 4 bytes
- Target Index (i) = 32
- Lower Bound (LB) = 10
Formula apply karne par:
Address(A[32]) = Base + W * (i - LB)
= 1500 + 4 * (32 - 10)
= 1500 + 4 * (22)
= 1500 + 88
= 1588
Toh element A[32] ka physical memory address 1588 hoga.
Agli post me hum cover karenge 2D Arrays: Row-Major and Column-Major Order Formulas and Numericals.