帮我写一个代码本题要求实现一个函数,找出数组中一部分数据的最大值和最小值
时间: 2023-03-25 11:00:47 浏览: 142
好的,以下是一个实现该功能的 Python 代码:
```python
def find_max_min(arr, start, end):
"""
在数组 arr 的下标范围 [start, end] 中找出最大值和最小值
"""
if start > end:
return None, None
if start == end:
return arr[start], arr[start]
else:
mid = (start + end) // 2
left_max, left_min = find_max_min(arr, start, mid)
right_max, right_min = find_max_min(arr, mid+1, end)
return max(left_max, right_max), min(left_min, right_min)
```
这个函数使用了分治法的思想,将数组分成左右两部分,分别递归求解左半部分和右半部分的最大值和最小值,然后将左右两部分的结果合并。具体来说,如果数组只有一个元素,那么它的最大值和最小值就是它本身;如果数组有多个元素,那么将数组分成左右两部分,分别递归求解左半部分和右半部分的最大值和最小值,然后将左右两部分的最大值和最小值分别取最大值和最小值即可。
使用该函数可以找出数组中任意一部分数据的最大值和最小值,只需要指定数组的下标范围即可。例如,如果要找出数组 `a` 中下标从 2 到 5 的部分数据的最大值和最小值,可以这样调用函数:
```python
a = [1, 3, 5, 2, 4, 6, 8, 7]
max_val, min_val = find_max_min(a, 2, 5)
print("max_val =", max_val) # 输出:max_val = 5
print("min_val =", min_val) # 输出:min_val = 2
```
这里的 `max_val` 和 `min_val` 分别是下标从 2 到 5 的部分数据的最大值和最小值。
阅读全文