C#次大数的函数
好像昨天看了个博客,提到次大数函数。想了想写了一个备忘。
public int GetSecMax(int[] dataset)
{
if (dataset == null || dataset.Length == 1)
throw new Exception("空或只有一个数"); //一个无解异常
int Max = dataset[0];
int secMax;
bool hasMax = false;
for (int i = 1; i < dataset.Length; i++)
{
if (!hasMax && (Max != dataset[i]))
hasMax = true;
if (Max < dataset[i])
Max = dataset[i];
}
if (hasMax) //有解
{
secMax = Max;
bool hasSecMax = false;
for (int j = 0; j < dataset.Length; j++)
{
if (!hasSecMax)
{
if (dataset[j] < Max)
{
secMax = dataset[j];
hasSecMax = true;
}
}
else
{
if((secMax < dataset[j]) && (dataset[j] < Max))
secMax = dataset[j];
}
}
return secMax;
}
throw new Exception("无解");
}
{
if (dataset == null || dataset.Length == 1)
throw new Exception("空或只有一个数"); //一个无解异常
int Max = dataset[0];
int secMax;
bool hasMax = false;
for (int i = 1; i < dataset.Length; i++)
{
if (!hasMax && (Max != dataset[i]))
hasMax = true;
if (Max < dataset[i])
Max = dataset[i];
}
if (hasMax) //有解
{
secMax = Max;
bool hasSecMax = false;
for (int j = 0; j < dataset.Length; j++)
{
if (!hasSecMax)
{
if (dataset[j] < Max)
{
secMax = dataset[j];
hasSecMax = true;
}
}
else
{
if((secMax < dataset[j]) && (dataset[j] < Max))
secMax = dataset[j];
}
}
return secMax;
}
throw new Exception("无解");
}