给定一个含n个整数顺序存储的线性表,按分治法思路,采用二分策略,设计一个求出其最大值和最小值算法,编写相应测试程序。要求使用分治法设计出其中求最大值、最小值组合的递归算法。
时间: 2024-05-08 15:16:03 浏览: 95
算法设计:
1. 将线性表二分为两个子表;
2. 分别在两个子表中递归寻找最大值和最小值;
3. 将两个子表的最大值和最小值进行比较,得到整个线性表的最大值和最小值。
算法实现:
```python
def find_max_min(lst):
n = len(lst)
if n == 1:
return lst[0], lst[0]
elif n == 2:
if lst[0] < lst[1]:
return lst[1], lst[0]
else:
return lst[0], lst[1]
else:
mid = n // 2
max_left, min_left = find_max_min(lst[:mid])
max_right, min_right = find_max_min(lst[mid:])
return max(max_left, max_right), min(min_left, min_right)
```
测试程序:
```python
lst = [5, 3, 8, 2, 9, 1, 6, 4, 7]
max_val, min_val = find_max_min(lst)
print('线性表:', lst)
print('最大值:', max_val)
print('最小值:', min_val)
```
输出:
```
线性表: [5, 3, 8, 2, 9, 1, 6, 4, 7]
最大值: 9
最小值: 1
```
阅读全文