利用分治法求一组数据中最大的两个数和最小的两个数的代码
时间: 2023-10-29 14:16:22 浏览: 94
可以使用分治法来求一组数据中最大的两个数和最小的两个数,具体步骤如下:
1. 将数据分成两个部分,分别处理每个部分;
2. 对每个部分递归调用求最大的两个数和最小的两个数的函数,并记录下每个部分中的最大数和最小数;
3. 将两个部分的最大数和最小数进行比较,得到全局最大的两个数和最小的两个数。
下面是一个 Python 的代码实现:
```python
def find_max_and_min(nums):
if len(nums) == 1:
return nums[0], nums[0]
elif len(nums) == 2:
return max(nums), min(nums)
else:
mid = len(nums) // 2
max_left, min_left = find_max_and_min(nums[:mid])
max_right, min_right = find_max_and_min(nums[mid:])
return max(max_left, max_right), min(min_left, min_right)
nums = [3, 5, 2, 8, 1, 9, 4, 7]
max1, min1 = find_max_and_min(nums)
print("Max 1:", max1)
print("Min 1:", min1)
# Remove the max and min and find again
nums.remove(max1)
nums.remove(min1)
max2, min2 = find_max_and_min(nums)
print("Max 2:", max2)
print("Min 2:", min2)
```
这个算法的时间复杂度为 O(nlogn),其中 n 是数据的长度。
阅读全文