本关任务:利用分治法求一组数据中最大的两个数和最小的两个数python
时间: 2024-11-05 09:24:49 浏览: 16
在Python中,你可以通过分治法来找到一组数据中的最大值、次大值、最小值和次小值。这种方法通常被称为"四数之分"或"四个元素的最大值和最小值"。这里是一种简单直观的实现方式:
```python
def find_four_numbers(arr):
# 基本情况:如果数组长度小于等于4,直接返回所有元素作为结果
if len(arr) <= 4:
return arr
# 分解问题:将数组分为两半
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
# 递归寻找左半部分和右半部分的前两个最大值和前两个最小值
left_max1, left_max2, left_min1, left_min2 = find_four_numbers(left_half)
right_max1, right_max2, right_min1, right_min2 = find_four_numbers(right_half)
# 合并结果
max1 = max(left_max1, right_max1)
max2 = max(left_max2, right_max2) if left_max2 != right_max1 else left_max1
min1 = min(left_min1, right_min1)
min2 = min(left_min2, right_min2) if left_min2 != right_min1 else left_min1
return max1, max2, min1, min2
# 测试函数
arr = [5, 9, 1, -3, 7, 2, 8, -6, 4]
max1, max2, min1, min2 = find_four_numbers(arr)
print(f"最大值:{max1}, {max2}")
print(f"最小值:{min1}, {min2}")
阅读全文