求最小值的算法

求最小值的算法有很多種,以下是一些常見的算法:

  1. 順序搜尋(Sequential Search):順序搜尋是一種簡單的查找算法,它檢查列表中的每個元素,直到找到最小值。
def min_sequential_search(numbers):
    min_value = numbers[0]
    for value in numbers[1:]:
        if value < min_value:
            min_value = value
    return min_value
  1. 選擇排序(Selection Sort):選擇排序是一種簡單的排序算法,它通過遍歷列表來選擇最小值。
def min_selection_sort(numbers):
    min_index = 0
    for i in range(1, len(numbers)):
        if numbers[i] < numbers[min_index]:
            min_index = i
    return numbers[min_index]
  1. 二分搜尋(Binary Search):二分搜尋是一種更高效的搜尋算法,它適用於有序列表。
def min_binary_search(numbers):
    low = 0
    high = len(numbers) - 1
    while low <= high:
        mid = (low + high) // 2
        if numbers[mid] < numbers[mid+1]:
            return numbers[mid]
        elif numbers[mid] > numbers[mid+1]:
            high = mid - 1
        else:
            low = mid + 1
    return numbers[low]
  1. 快速排序(Quick Sort):快速排序是一種高效的排序算法,它也可以用來查找最小值。
def min_quick_sort(numbers):
    def partition(arr, low, high):
        pivot = arr[high]
        i = (low - 1)
        for j in range(low, high):
            if arr[j] <= pivot:
                i += 1
                arr[i], arr[j] = arr[j], arr[i]
        arr[i], arr[high] = arr[high], arr[i]
        return i + 1

    def quick_sort(arr, low, high):
        if low < high:
            pi = partition(arr, low, high)
            quick_sort(arr, low, pi - 1)
            quick_sort(arr, pi + 1, high)

    quick_sort(numbers, 0, len(numbers) - 1)
    return numbers[0]

選擇合適的算法取決於數據的大小和是否有序。對於有序數據,二分搜尋和快速排序通常更高效。對於小數據集或無序數據,順序搜尋和選擇排序可能是更簡單的選擇。