问题描述:如何在O(n)时间内找到一个整数数组中的第二大元素。
思路:遍历时同时保存第一和第二就成了。
C++实现如下:
#include<iostream>
using namespace std;
const int MINNUM= -32767 ;
int find_sec_max( int data[] , int count)
{
int maxnum= data[0] ;
int sec_max = MINNUM;
for ( int i = 1 ; i < count ; ++I )
{
if ( data[i] > maxnum )
{
sec_max = maxnum ;
maxnum = data[i] ;
}
else
{
if ( data[i] > sec_max )
sec_max = data[i] ;
}
}
return sec_max ;
}
int main()
{ //测试用例
int a[10]={1,3,4,2,4,2,4,7,8,6};
int b=find_sec_max(a,10);
cout<<b<<endl;
return 0;
}