给定一个含n个整数顺序存储的线性表,按分治法思路,采用二分策略,设计一个求出其最大值和最小值算法,编写相应测试程序。要求使用分治法设计出其中求最大值、最小值组合的递归算法。并带有测试程序
时间: 2024-05-03 18:23:08 浏览: 89
分治算法实验(用分治法查找数组元素的最大值和最小值).doc
算法设计:
1.将线性表分成两个部分,分别求出左半部分的最大值和最小值,以及右半部分的最大值和最小值。
2.比较左半部分最大值和右半部分最大值,取较大值为整个线性表的最大值。
3.比较左半部分最小值和右半部分最小值,取较小值为整个线性表的最小值。
测试程序:
```python
def find_max_min(arr, left, right):
if left == right:
return arr[left], arr[right]
elif left + 1 == right:
return (arr[left], arr[right]) if arr[left] < arr[right] else (arr[right], arr[left])
else:
mid = (left + right) // 2
left_max, left_min = find_max_min(arr, left, mid)
right_max, right_min = find_max_min(arr, mid + 1, right)
return max(left_max, right_max), min(left_min, right_min)
arr = [1, 5, 3, 7, 2, 9, 4, 6]
max_val, min_val = find_max_min(arr, 0, len(arr) - 1)
print("Max value in the list is:", max_val)
print("Min value in the list is:", min_val)
```
输出结果:
```
Max value in the list is: 9
Min value in the list is: 1
```
阅读全文