求数组中第二大的数,要求时间复杂度为O(n),即遍历一遍
const int MinN = -32767;
int FindSecMax(int data[], int iCount)
{
int iMaxNum = data[0];
int iSecMax = MinN;
for (int i = 1; i < iCount; i++)
{
if (data[i] > iMaxNum) //如果当前数大于最大的,最大的数变成第二大的数,当前的数就就是最大的
{
iSecMax = iMaxNum;
iMaxNum = data[i];
}
else
{
if (data[i] > iSecMax) //只是大于次大的,就修改次大的值
{
iSecMax = data[i];
}
}
}
return iSecMax;
}