Introduction
Greetings, coding enthusiasts! Today, we embark on a quest through the array of landscapes to find specific elements. The ability to search for elements is a fundamental skill every coder should master. In this blog post, we’ll explore the territories of Linear Search and Binary Search—two search algorithms with distinct approaches. Let’s dive into the code and unravel the techniques to locate specific elements in Python.
The Array Landscape
Arrays serve as data structures to hold collections of elements. Searching for a specific element within an array is akin to navigating through a vast landscape in search of hidden treasures.
Array Wonderland
Before we begin our quest, let’s establish our array landscape—a collection of elements we want to explore.
# Example array: [5, 2, 8, 1, 7, 3]
array = [5, 2, 8, 1, 7, 3]
Linear Search: The Explorer’s Approach
Linear Search is a straightforward algorithm that traverses the array from the beginning, examining each element one by one until the desired element is found or the end of the array is reached.
def linear_search(nums, target):
for i in range(len(nums)):
if nums[i] == target:
return i
return -1 # Element not found
Example:
# Searching for the element 7 using Linear Search
result_linear_search = linear_search(array, 7)
print("Index of element 7 (Linear Search):", result_linear_search)
Binary Search: The Divide and Conquer Navigator
Binary Search is a more efficient algorithm but requires the array to be sorted. It works by repeatedly dividing the search interval in half.
def binary_search(nums, target):
low, high = 0, len(nums) - 1
while low <= high:
mid = (low + high) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1 # Element not found
Before applying Binary Search, let’s ensure our array is sorted:
array.sort()
Now, let’s use Binary Search:
# Searching for the element 7 using Binary Search
result_binary_search = binary_search(array, 7)
print("Index of element 7 (Binary Search):", result_binary_search)