c++ 找出整形数组中最大值和次最大值
时间: 2024-09-29 17:06:47 浏览: 54
在 C++ 中,找出整型数组中的最大值和次大值可以使用多种方法。这里提供一种简单直观的方法:
1. **遍历法**:首先初始化两个变量,`max_value` 和 `second_max` 分别存储当前找到的最大值和次大值。然后依次遍历数组,如果当前元素大于 `max_value`,则更新 `max_value`,同时将原来的 `max_value` 赋值给 `second_max`;如果元素小于 `max_value` 但大于 `second_max`,则更新 `second_max`。
```cpp
int max(int arr[], int size) {
if (size < 2) return -1; // 如果数组元素少于2,无法找到次大值
int max_value = arr[0];
int second_max = INT_MIN; // 初始化为负无穷,防止溢出
for (int i = 1; i < size; i++) {
if (arr[i] > max_value) {
second_max = max_value;
max_value = arr[i];
} else if (arr[i] > second_max && arr[i] != max_value) {
second_max = arr[i];
}
}
return second_max;
}
// 示例
int arr[] = {5, 9, 3, 8, 6};
int size = sizeof(arr) / sizeof(arr[0]);
int secondLargest = max(arr, size);
```
**相关问题--:**
1. 这种方法的时间复杂度是多少?
2. 如果数组中有相同的第二大值,上述代码会怎么处理?
3. 是否有更高效的方法来寻找最大值和次大值,尤其是对于大型数组?
阅读全文