DEV Community

johnsone emett
johnsone emett

Posted on

search/sort algos

# Search Algorithms

def linear_search(arr, target):
    """Linear Search: Find the index of target in the array (O(n))"""
    for i, val in enumerate(arr):
        if val == target:
            return i  # Return the index of the target
    return -1  # Return -1 if the target is not found

def binary_search(arr, target):
    """Binary Search: Find the index of target in a sorted array (O(log n))"""
    low, high = 0, len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid  # Return the index of the target
        elif arr[mid] < target:
            low = mid + 1
        else:
            high = mid - 1
    return -1  # Return -1 if the target is not found

# Sorting Algorithms

def merge_sort(arr):
    """Merge Sort: Sort the array (O(n log n))"""
    if len(arr) <= 1:
        return arr
    mid = len(arr) // 2
    left = merge_sort(arr[:mid])
    right = merge_sort(arr[mid:])
    return merge(left, right)

def merge(left, right):
    """Merge two sorted lists"""
    result = []
    i, j = 0, 0
    while i < len(left) and j < len(right):
        if left[i] < right[j]:
            result.append(left[i])
            i += 1
        else:
            result.append(right[j])
            j += 1
    result.extend(left[i:])
    result.extend(right[j:])
    return result

def quick_sort(arr):
    """Quick Sort: Sort the array (O(n log n) on average, O(n^2) in the worst case)"""
    if len(arr) <= 1:
        return arr
    pivot = arr[0]
    left = [x for x in arr[1:] if x < pivot]
    right = [x for x in arr[1:] if x >= pivot]
    return quick_sort(left) + [pivot] + quick_sort(right)

def bubble_sort(arr):
    """Bubble Sort: Sort the array (O(n^2))"""
    n = len(arr)
    for i in range(n):
        swapped = False
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]  # Swap elements
                swapped = True
        if not swapped:
            break  # If no elements were swapped, the list is sorted
    return arr

# Example Usage

# Search algorithms
arr = [3, 2, 1, 5, 4]
target = 5
print(f"Linear Search: Target {target} is at index {linear_search(arr, target)}")

arr_sorted = [1, 2, 3, 4, 5]
target = 4
print(f"Binary Search: Target {target} is at index {binary_search(arr_sorted, target)}")

# Sorting algorithms
arr_to_sort = [5, 2, 9, 1, 5, 6]
print(f"Original Array: {arr_to_sort}")

# Merge Sort
sorted_arr_merge = merge_sort(arr_to_sort)
print(f"Merge Sort: {sorted_arr_merge}")

# Quick Sort
sorted_arr_quick = quick_sort(arr_to_sort)
print(f"Quick Sort: {sorted_arr_quick}")

# Bubble Sort
sorted_arr_bubble = bubble_sort(arr_to_sort)
print(f"Bubble Sort: {sorted_arr_bubble}")
Enter fullscreen mode Exit fullscreen mode

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

AWS Security LIVE!

Join us for AWS Security LIVE!

Discover the future of cloud security. Tune in live for trends, tips, and solutions from AWS and AWS Partners.

Learn More

👋 Kindness is contagious

If this post resonated with you, feel free to hit ❤️ or leave a quick comment to share your thoughts!

Okay