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("无解");  

    }

posted on 2007-01-12 10:35  超子  阅读(306)  评论(0编辑  收藏  举报

导航