背景介绍
在C++编程中,我们经常需要处理和操作数组,而数组中的最大值是一个常见的操作。但有时我们需要找到数组中除去最大值之后的最大值。本文介绍如何编写C++程序,在删除最大值后找到数组的最大值。
解决方案
方案一:遍历查找
最简单的方法是先遍历一次数组,找到数组中的最大值max。然后再遍历一次数组,找到不等于max的最大值。
该方法的代码如下:
int find_second_largest(int arr[], int n) {
int max = arr[0];
for(int i=1; i
if(arr[i] > max) {
max = arr[i];
}
}
int second_max = INT_MIN;
for(int i=0; i
if(arr[i] != max && arr[i] > second_max) {
second_max = arr[i];
}
}
return second_max;
}
该函数使用了两个循环,时间复杂度为O(n)。
方案二:排序查找
我们可以先对数组进行排序,然后找到倒数第二个元素即可。
该方法的代码如下:
int find_second_largest(int arr[], int n) {
sort(arr, arr+n);
return arr[n-2];
}
该函数使用了sort函数进行排序,时间复杂度为O(nlogn)。
实例演示
下面我们来演示如何使用上面的两种方法查找除去最大值后的数组最大值。
遍历查找
假设我们有一个数组arr,它的大小为5,我们要找到除去最大值后的最大值。
int arr[] = {1, 5, 4, 6, 3};
int n = sizeof(arr)/sizeof(arr[0]);
int second_max = find_second_largest(arr, n);
cout << "Second largest element is: " << second_max << endl;
输出结果为:
Second largest element is: 5
排序查找
假设我们有一个数组arr,它的大小为5,我们要找到除去最大值后的最大值。
int arr[] = {1, 5, 4, 6, 3};
int n = sizeof(arr)/sizeof(arr[0]);
int second_max = find_second_largest(arr, n);
cout << "Second largest element is: " << second_max << endl;
输出结果为:
Second largest element is: 5
结论
本文介绍了如何在C++程序中查找数组中除去最大值后的最大值。我们可以使用遍历查找和排序查找两种方法,其中遍历查找方法时间复杂度为O(n),排序查找方法时间复杂度为O(nlogn)。开发者可以根据实际情况选择合适的方法。