利用分治法求一组数据中最大的两个数和最小的两个数Python
时间: 2024-11-09 17:19:33 浏览: 5
要利用分治法求一组数据中的最大两个数和最小两个数,你可以使用类似于二路归并排序的思想。这里我们先找到数组中的最大值和最小值,然后分别找出剩余部分的第二大和第二小的数。以下是实现这一过程的一个简单示例:
```python
def find_two_largest_smallest(arr):
# Step 1: Find the overall maximum and minimum values
max_value = min_value = arr[0]
second_max = float('-inf')
second_min = float('inf')
# Iterate through the array
for num in arr:
if num > max_value:
second_max = max_value
max_value = num
elif num > second_max and num != max_value:
second_max = num
if num < min_value:
second_min = min_value
min_value = num
elif num < second_min and num != min_value:
second_min = num
return max_value, second_max, min_value, second_min
# Example usage
arr = [4, 2, 9, 6, 1, 5, 3, 8]
max_num_1, max_num_2, min_num_1, min_num_2 = find_two_largest_smallest(arr)
print(f"Two largest numbers: {max_num_1}, {max_num_2}")
print(f"Two smallest numbers: {min_num_1}, {min_num_2}")
```
在这个代码中,`find_two_largest_smallest` 函数遍历数组一次,同时维护当前已知的最大值(`max_value`),次大值(`second_max`),最小值(`min_value`),以及次小值(`second_min`)。通过这种方式,我们可以避免对整个数组进行多次排序。
阅读全文