【问题描述】利用分治算法求一个n运算数组的最大元素和最小元素 【输入形式】输入两行,第一行为一个整数n(n<100).第二行为数组的n个元素; 【输出形式】输出两个数,一个是数组最大元素的值,一个是数组最小元素的值,中间用空格隔开 【样例输入】 8 8 3 2 9 7 1 5 4 【样例输出】 9 1 【样例说明】 数组中有8个元素,最大值为9,最小值为1 ;
时间: 2023-11-29 21:04:53 浏览: 116
算法导论期末复习习题
下面是分治算法的Python代码实现:
```python
def max_min(arr, left, right):
if left == right: # 数组中只有一个元素
return arr[left], arr[left]
elif left + 1 == right: # 数组中只有两个元素
return (arr[left], arr[right]) if arr[left] > arr[right] else (arr[right], arr[left])
else:
mid = (left + right) // 2
max_left, min_left = max_min(arr, left, mid) # 左半边最大值和最小值
max_right, min_right = max_min(arr, mid+1, right) # 右半边最大值和最小值
return max(max_left, max_right), min(min_left, min_right) # 合并左右两边的结果
```
主函数中调用 `max_min` 函数即可:
```python
n = int(input().strip())
arr = list(map(int, input().strip().split()))
max_val, min_val = max_min(arr, 0, n-1)
print(max_val, min_val)
```
完整代码如下:
阅读全文