用c++求一个数组第二大数
时间: 2024-10-21 07:04:35 浏览: 60
数组中求第K大数的实现方法
在 C++ 中,你可以通过迭代遍历数组并记录当前的最大值和次大值来找到一个数组中的第二大数。这里有一个简单的示例:
```cpp
#include <iostream>
using namespace std;
int findSecondLargest(int arr[], int size) {
if (size <= 1) {
// 如果数组只有一个元素或为空,直接返回 -1 或抛出异常
return -1; // 返回默认的 "无第二大的" 表示
}
int max_num = arr[0]; // 初始化最大值
int second_max = INT_MIN; // 初始化次大值为负无穷
for (int i = 1; i < size; ++i) {
if (arr[i] > max_num) { // 如果找到更大的数
second_max = max_num;
max_num = arr[i];
} else if (arr[i] != max_num && arr[i] > second_max) { // 否则,如果不是最大值且大于次大值
second_max = arr[i]; // 更新次大值
}
}
// 检查是否所有元素都相等且只有一对相同的最大值
if (second_max == INT_MIN) {
return -1; // 如果所有元素都相同,则没有第二大的数
}
return second_max;
}
// 测试函数
int main() {
int arr[] = {5, 10, 15, 20, 7};
int size = sizeof(arr) / sizeof(arr[0]);
int second_largest = findSecondLargest(arr, size);
if (second_largest != -1)
cout << "第二大的数是: " << second_largest << endl;
else
cout << "数组中没有第二大的数" << endl;
return 0;
}
```
在这个例子中,`findSecondLargest` 函数会遍历数组,同时维护两个变量 `max_num` 和 `second_max`。每次遇到比 `max_num` 更大的数,它会将当前最大值赋给 `second_max`,然后更新 `max_num`。最后返回的就是第二大的数。
阅读全文