分治法查找最大最小值代码
时间: 2024-10-29 09:00:25 浏览: 7
用分治法求最大最小值JAVA为例
分治法查找数组中最大值和最小值是一种常见的算法策略,它将复杂的问题分解成规模更小的子问题来解决。以下是使用Python语言的一个基本示例,采用分治法来寻找数组的最小值:
```python
def find_min_max(arr, low, high):
# 如果数组只有一个元素,那么它是最小值也是最大值
if low == high:
return (arr[low], arr[high])
# 如果有偶数个元素,取中间两个的比较结果作为新数组的边界
elif high - low == 1:
return min(arr[low], arr[high]), max(arr[low], arr[high])
else:
mid = (low + high) // 2
# 分别找出左半部分和右半部分的最小值和最大值
left_min, left_max = find_min_max(arr, low, mid)
right_min, right_max = find_min_max(arr, mid + 1, high)
# 比较并返回整个数组的最小值和最大值
return min(left_min, right_min), max(left_max, right_max)
# 使用示例
arr = [5, 8, 2, 9, 4]
min_val, max_val = find_min_max(arr, 0, len(arr) - 1)
print("Minimum value:", min_val)
print("Maximum value:", max_val)
阅读全文