求最小值的算法
求最小值的算法有很多種,以下是一些常見的算法:
- 順序搜尋(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
- 選擇排序(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]
- 二分搜尋(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]
- 快速排序(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]
選擇合適的算法取決於數據的大小和是否有序。對於有序數據,二分搜尋和快速排序通常更高效。對於小數據集或無序數據,順序搜尋和選擇排序可能是更簡單的選擇。