输入 结果
1 2 3 4 5
4
1 2 45 45 30
30
23 23 23 23 23
-34 -56 -112 -57 -67
-56
int secmax1(int *t,int n)
{
int j,max=t[0],min=t[0],secmax;
for(j=0; j<n; j++)
{
if(t[j]<=min)
{
min=t[j];
}
}
int pos=0;
for(j=0; j<n; j++)
{
if(t[j]>=max)
{
max=t[j];
pos=j;
}
}
t[pos]=min;
secmax=min;
for(j=0; j<n; j++)
{
if(t[j]>=secmax)
{
secmax=t[j];
}
}
return secmax;
}
设置两个变量,先将存储前二大的数的变量设置成最小值
然后再用2个变量来判断数组中是否有2个不同的值(先将他们都赋值为数组第一个数)
int temp1 = nums[0],temp2 = nums[0];
循环找到前二大的数,要满足temp2与temp1不相同
if(nums[i] != temp1)
{
temp2 = nums[i];
}
如果找到一个更大的数,则将当前的max变成two
if(nums[i] > max)
{
two = max;
max = nums[i];
}
//如果这个数不是更大的数,则与第二大的数比较
else if(nums[i] < max && nums[i] > two)
{
two = nums[i];
}
}
if(temp1 == temp2 ) return max;
else return two;
}