簡體   English   中英

在數組 C# 中查找第二大元素

[英]Finding 2nd Largest Element in the Array C#

我正在學習 DSA 以改進我的編程邏輯,我正在解決這個問題以使用 C# 找到數組中的第二大元素。 我第一次做不到,但我不知道邏輯是如何在我的腦海中點擊的,所以我嘗試了這個,我不知道它是一個好的算法還是快速但我想告訴所有新手這是找到第二大元素的最簡單方法數組。

            int[] arr = new int[8];
            int secondlarge;
            int temp;
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write("Index - {0} :", i);
                arr[i] = Convert.ToInt32(Console.ReadLine());
            }

            Console.WriteLine("Elemnts in array are: ");
            for (int i = 0; i < arr.Length; i++)
            {
                Console.Write("{0} ", arr[i]);
                
            }
            Console.WriteLine();
            temp = arr[0];
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] > temp)
                {
                    temp = arr[i];
                    
                }

            }
            secondlarge = arr[0];
            for (int i = 0; i < arr.Length; i++)
            {
                if (temp == arr[i])
                {
                    continue;
                }

                if (arr[i] > secondlarge)
                {
                    secondlarge = arr[i];
                }

            }
            Console.WriteLine("Second Largest Number is : " + secondlarge);

您可以保留max項目和下一個項目:

int max = Math.Max(arr[0], arr[1]);
int result = Math.Min(arr[0], arr[1]);

for (int i = 2; i < arr.Length; ++i) 
  if (arr[i] >= max) 
    (result, max) = (max, arr[i]);
  else if (arr[i] > result)
    result = arr[i];

這種方法可以在arr的情況下提供幫助:它比排序( O(n)O(n * log(n)) )要快一些,並且不需要額外的內存來存儲排序數據(在 Linq OrderByDescending的情況下)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM