找出数组最大和次大值
时间: 2024-10-07 20:06:13 浏览: 20
找出数组的最大值和次大值是一个常见的编程任务,可以使用线性时间复杂度O(n)来完成。这里有一种简单直接的方法:
1. 初始化两个变量,`max_value`和`second_max`,分别设置为数组的第一个元素和负无穷大。这是为了确保无论数组的初始状态如何,这两个变量都能找到正确的最大值和次大值。
2. 遍历数组从第二个元素开始(因为第一个已经初始化过了):
- 如果当前元素大于`max_value`,则将`second_max`更新为原来的`max_value`,并将`max_value`设为当前元素。
- 否则,如果当前元素大于`second_max`但小于`max_value`,则将`second_max`设为当前元素。
3. 遍历结束后,`max_value`就是数组中的最大值,而`second_max`就是次大值。注意,如果有多个相同的最大值,`second_max`将是其中第二大的那个。
以下是一个简单的Python示例:
```python
def find_two_largest(arr):
max_value = arr[0]
second_max = float('-inf')
for num in arr[1:]:
if num > max_value:
second_max = max_value
max_value = num
elif num > second_max and num < max_value:
second_max = num
return max_value, second_max
# 示例
arr = [4, 2, 9, 7, 5]
largest, second_largest = find_two_largest(arr)
print("最大值:", largest)
print("次大值:", second_largest)
```
阅读全文