Tag Archives: BFS 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