Tag Archives: KMP Algorithm

🔍 Searching Algorithms


🧩 What is Searching?

Image
Image
Image
Image

Searching is the process of locating a specific element (called a key) within a data structure such as an array, list, tree, or graph. It is one of the most fundamental operations in computer science and forms the backbone of data retrieval systems.

Example:

Array: [10, 25, 30, 45, 60]
Search Key: 30 → Found at index 2

Searching algorithms are designed to efficiently determine:

  • Whether an element exists
  • Where it is located
  • How quickly it can be found

🧠 Importance of Searching Algorithms

  • Essential for data retrieval systems
  • Used in databases and search engines
  • Helps in decision-making algorithms
  • Improves performance of applications

⚙️ Classification of Searching Algorithms

Searching algorithms can be categorized based on:

🔹 1. Based on Data Structure

  • Searching in arrays/lists
  • Searching in trees
  • Searching in graphs

🔹 2. Based on Technique

  • Sequential search
  • Divide and conquer
  • Hash-based search

🔹 3. Based on Data Order

  • Searching in unsorted data
  • Searching in sorted data

🔢 Linear Search

Image
Image
Image
Image

📌 Concept

Linear search checks each element one by one until the target is found.

🧾 Algorithm

  1. Start from first element
  2. Compare with key
  3. Move to next element
  4. Repeat until found or end

💻 Code Example

def linear_search(arr, key):
    for i in range(len(arr)):
        if arr[i] == key:
            return i
    return -1

⏱️ Complexity

  • Best: O(1)
  • Average: O(n)
  • Worst: O(n)

✅ Advantages

  • Simple
  • Works on unsorted data

❌ Disadvantages

  • Slow for large datasets

🔍 Binary Search

Image
Image
Image
Image

📌 Concept

Binary search repeatedly divides a sorted array into halves.

🧾 Algorithm

  1. Find middle element
  2. Compare with key
  3. If equal → return
  4. If smaller → search left
  5. If larger → search right

💻 Code Example

def binary_search(arr, key):
    low, high = 0, len(arr)-1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == key:
            return mid
        elif arr[mid] < key:
            low = mid + 1
        else:
            high = mid - 1
    return -1

⏱️ Complexity

  • Best: O(1)
  • Average: O(log n)
  • Worst: O(log n)

✅ Advantages

  • Very fast
  • Efficient for large datasets

❌ Disadvantages

  • Requires sorted data

🧠 Jump Search

Image
Image
Image

📌 Concept

Jumps ahead by fixed steps and then performs linear search.

⏱️ Complexity

  • O(√n)

🔎 Interpolation Search

Image
Image

📌 Concept

Estimates position based on value distribution.

⏱️ Complexity

  • Best: O(log log n)
  • Worst: O(n)

🧭 Exponential Search

Image
Image
Image

📌 Concept

Finds range first, then applies binary search.


🌳 Searching in Trees

Image
Image
Image
Image

📌 Binary Search Tree (BST)

Search based on ordering:

  • Left < Root < Right

⏱️ Complexity

  • Average: O(log n)
  • Worst: O(n)

🌐 Searching in Graphs


🔹 Depth First Search (DFS)

Image
Image
Image
  • Uses stack
  • Explores deeply

🔹 Breadth First Search (BFS)

Image
Image
Image
  • Uses queue
  • Explores level by level

🔑 Hash-Based Searching

Image
Image
Image
Image

📌 Concept

Uses hash functions to map keys to positions.

⏱️ Complexity

  • Average: O(1)
  • Worst: O(n)

🧮 Comparison Table

AlgorithmBest CaseAverageWorst Case
Linear SearchO(1)O(n)O(n)
Binary SearchO(1)O(log n)O(log n)
Jump SearchO(1)O(√n)O(√n)
InterpolationO(1)O(log log n)O(n)
ExponentialO(1)O(log n)O(log n)
HashingO(1)O(1)O(n)

⚡ Advantages of Searching Algorithms

  • Efficient data retrieval
  • Reduces computation time
  • Improves system performance

⚠️ Disadvantages

  • Some require sorted data
  • Complex implementation
  • Extra memory usage (hashing)

🧠 Advanced Searching Concepts


🔹 1. Ternary Search

Image
Image
Image

Divides array into three parts.


🔹 2. Fibonacci Search

Image
Image
Image
Image

Uses Fibonacci numbers.


🔹 3. Pattern Searching

Image
Image
Image

Used in strings:

  • KMP
  • Rabin-Karp

🔬 Applications of Searching


🌐 1. Search Engines

Image
Image
Image
Image

🧾 2. Databases

Image
Image
Image
Image

🧠 3. Artificial Intelligence

Image
Image
Image
Image

🎮 4. Games

Image
Image
Image
Image

📊 5. Data Analytics

Image
Image
Image
Image

🔁 Searching vs Sorting

FeatureSearchingSorting
PurposeFind elementArrange elements
DependencyOften needs sortingIndependent

🧪 Real-World Importance

Searching algorithms are essential in:

  • Web applications
  • Databases
  • Networking
  • AI systems
  • Cybersecurity

🧾 Conclusion

Searching algorithms are critical for efficient data handling and retrieval. From simple linear search to advanced hashing and AI-based search methods, they form the backbone of modern computing systems.

Mastering searching algorithms enables:

  • Faster problem solving
  • Efficient coding
  • Strong algorithmic thinking

🏷️ Tags

🧩 Arrays and Strings – Complete Detailed Guide


🌐 Introduction to Arrays and Strings

Image
Image
Image
Image

Arrays and strings are among the most fundamental data structures in computer science and programming. They form the building blocks for more complex structures like lists, stacks, queues, trees, and databases.

  • Array → Stores a collection of elements of the same data type
  • String → Stores a sequence of characters (text)

In simple terms:

Arrays manage collections of data, while strings manage textual data


🧠 ARRAYS


📌 What is an Array?

An array is a data structure that stores multiple elements of the same type in contiguous memory locations.

Example:

int arr[5] = {10, 20, 30, 40, 50};

⚙️ Characteristics of Arrays

  • Fixed size (in most languages)
  • Homogeneous elements (same type)
  • Indexed access (0-based index)
  • Stored in contiguous memory

🧩 Array Representation in Memory

Image
Image
Image
Image

Each element is stored sequentially:

Index:   0   1   2   3   4
Value:  10  20  30  40  50

Address calculation:

Address = Base + (Index × Size of element)

🔢 Types of Arrays


🔹 1. One-Dimensional Array

Image
Image
Image
Image
  • Linear structure
  • Single index

🔹 2. Two-Dimensional Array

Image
Image
Image
Image
  • Matrix format
  • Rows and columns

Example:

int arr[2][3];

🔹 3. Multi-Dimensional Array

Image
Image
Image
Image
  • Used in scientific computing
  • Example: 3D arrays

⚙️ Array Operations


🔹 Traversal

  • Access each element

🔹 Insertion

  • Add element (costly if fixed size)

🔹 Deletion

  • Remove element and shift

🔹 Searching

  • Linear search
  • Binary search

🔹 Sorting

  • Bubble sort
  • Merge sort
  • Quick sort

🔍 Searching Techniques

Image
Image
Image
Image

⚡ Advantages of Arrays

  • Fast access (O(1))
  • Simple implementation
  • Efficient memory usage

⚠️ Limitations of Arrays

  • Fixed size
  • Insertion/deletion costly
  • Wasted memory

🔤 STRINGS


📌 What is a String?

A string is a sequence of characters stored in memory.

Example:

char str[] = "Hello";

🧠 String Representation

Image
Image
Image
Image

Stored as:

H  e  l  l  o  \0

(\0 = null terminator)


🔤 Character Encoding


🔹 ASCII

Image
Image
Image
Image
  • 7/8-bit encoding
  • Limited characters

🔹 Unicode

Image
Image
Image
Image
  • Supports global languages
  • UTF-8, UTF-16

⚙️ String Operations


🔹 Basic Operations

  • Length
  • Concatenation
  • Comparison
  • Substring

🔹 Advanced Operations

Image
Image
Image
Image
  • Pattern matching
  • Parsing
  • Tokenization

🔍 String Searching Algorithms


🔹 Naive Algorithm

🔹 KMP Algorithm

🔹 Rabin-Karp Algorithm


🔄 Arrays vs Strings


⚖️ Comparison Table

FeatureArrayString
Data TypeAnyCharacters
SizeFixedVariable
UsageGeneral dataText

🧠 Memory Management


📦 Static vs Dynamic Arrays

  • Static → Fixed size
  • Dynamic → Resizable

Example:

  • Python lists
  • Java ArrayList

🧠 Dynamic Strings

  • Strings can be mutable or immutable

⚙️ Multidimensional Strings


🧩 Examples:

  • Array of strings
  • String matrices

🧠 Applications of Arrays and Strings


💻 Programming

  • Data storage
  • Algorithms

🌐 Web Development

  • Text processing
  • Input handling

🤖 AI and Data Science

  • Data representation
  • NLP (Natural Language Processing)

🎮 Gaming

  • Graphics arrays
  • Text rendering

⚡ Advantages


Arrays:

  • Fast access
  • Structured storage

Strings:

  • Easy text manipulation
  • Human-readable

⚠️ Limitations


Arrays:

  • Fixed size
  • Less flexible

Strings:

  • Memory overhead
  • Slower operations

🚀 Advanced Topics

Image
Image
Image
Image
  • Dynamic arrays
  • String hashing
  • Suffix arrays
  • Advanced data structures

🧾 Conclusion

Arrays and strings are core data structures in computing. They:

  • Store and organize data
  • Enable efficient algorithms
  • Form the basis of advanced programming

Understanding them is essential for:

  • Coding interviews
  • Software development
  • Algorithm design

🏷️ Tags