Tag Archives: hash search

🔍 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