给你一个数组,求出其中第二大的数;比如数组a={1,2,3,4,5,6,7,8,9},其中第二大的数为8,返回8即可;
分析:一般情况下都是求最大值,呵呵,这道题很有趣。想想也不难,可以在扫描最大值的同时,求出第二大的值,就是比当前最大值大的数赋给最大值,然后用第二大的值与先前的最大值比较,如果小,则用先前的值覆盖第二大的值,哈哈,原理就这么简单;、
代码如下:
// [7/1/2013 qingezha] 找出一个数组中的第二大数,遍历一遍
int Find_Sec_Max( int *a,int n )
{
const int INF=-32767;
int maxnum=a[0];
int secmax=INF;
int temp = 0;
for (int i=1;i<n;i++)
{
/*if (a[i]>maxnum) //方法1
{
secmax=maxnum;
maxnum=a[i];
}
else if(a[i]>secmax)
{
secmax=a[i];
}*/
if (maxnum<a[i]) //方法2
{
temp = maxnum;
maxnum = a[i];
}
if(temp>secmax)
secmax = temp;
}
cout<<"this second maxnum is "<<secmax<<endl;
return secmax;
}