在数组中找到第二个最大值

时间:2016-11-29 17:45:42

标签: c# arrays

我在查找数组中第二大数字时遇到问题。问题是,它不适用于我的所有示例。 在我从键盘读取数字后,我将它们放入方法测试,然后我对它们进行排序..例如:(用户输入)1,2,3,4,5,6,7,8,9, 10 退出:10,9,.. 3,2,1 现在我想用for循环显示第二大数字.. **任务是:如果可能,找到第二大数字,如果不是CW(“错误”)**

代码注释//这里我不知道如何正确编写代码部分。

我希望我的问题有道理......

    public static int test(int[] polje)
    {

        int temp = 0;
        Console.WriteLine();
        for (int c = 0; c < polje.Length; c++)
        {
            for (int b = c + 1; b < polje.Length; b++)
            {
                if (polje[c] > polje[b])
                {
                    temp = polje[c];
                    polje[c] = polje[b];
                    polje[b] = temp;

                }

            }

        }

        int secondlargest = 0;



        //HERE

        for (int i = polje.Length - 1; i >= 0; i--)
        {
            if (polje[polje.Length - 2] == polje[polje.Length - 1] || polje[polje.Length - 2] == 0)
            {
                Console.WriteLine("Wrong!");
                break;
            }
            else
            {
                Console.WriteLine("Second largest number is :{0}", polje[polje.Length - 2]);
                secondlargest = polje[polje.Length - 2];
                break;
            }
        }


        return secondlargest;

    }
    static void Main(string[] args)
    {

        int[] polje = new int[10];
        Console.WriteLine("Enter values");
        for (int i = 0; i < 10; i = i + 1)
        {

            polje[i] = int.Parse(Console.ReadLine());
            if (polje[i] == 0)
            {
                break;
            }
        }
        test(polje);

        Console.ReadLine();
    }
}

}

2 个答案:

答案 0 :(得分:4)

这很简单:

var secondMaxValue = yourArray.OrderByDescending(x=> x).Skip(1).FirstOrDefault();

答案 1 :(得分:0)

int GetSecondLargest(int[] a){
    int a0,b0;
    for(int i = 0; i <a.Length;i++){
            if(a[i] > a0){ 
                  b0 = a0;
                  a0 = a[i];
            }else if(a[i] > b0) b0 = a[i];
   }
   return b0;

编辑:格式化很糟糕,但想法是保留最大值并使用基本条件获得正确的值。没有Linq需要。