You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#实现查找数组中第二大元素的方法及代码示例

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

实现逻辑拆解

整个实现没有用到任何复杂API或技巧,逻辑完全线性:

  • 先初始化长度为8的整型数组,逐行读取控制台输入填充数组,打印全部元素方便核对输入是否正确
  • 第一轮遍历全数组,记录数组中的最大值
  • 第二轮遍历全数组,跳过所有和最大值相等的元素,在剩余元素中找到的最大值就是第二大值
  • 最终打印输出第二大值的结果

补充说明

  • 这个实现的时间复杂度为O(n),总共仅遍历2次数组,不管是新手练习还是日常业务场景使用,效率都完全足够
  • 现有代码没有处理「数组内所有元素值完全相同」的边界场景,这种情况下返回的第二大值会和最大值相等,实际使用时可以根据需求加一层判断做特殊处理
  • 如果追求更少的遍历次数,可以优化为单次遍历同时维护最大值、第二大值两个变量,但对新手来说,先把这种拆分步骤的直白写法写对、把逻辑理清楚,比一开始就追求极简写法的学习效果好很多

内容的提问来源于stack exchange,提问作者Rao Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 18:39:18