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

仅使用System命名空间如何在循环中对比前后元素判断int数组是否升序

C# 实现int数组升序判断的方案

核心思路

你需要的当前元素和前一个元素对比逻辑不需要额外存储变量,直接通过数组下标偏移即可实现:

  • 循环从下标1开始遍历(下标0是首个元素,没有前驱元素无需比较)
  • 下标为i时,当前元素是array[i],前一个元素就是array[i-1]
  • 只要出现任意一处当前元素 < 前一个元素,即可直接判定数组不是升序,提前终止循环
  • 边界场景兼容:长度为0或1的数组天然符合升序要求

正确实现代码

using System;

class Program
{
    static bool IsAscending(int[] array)
    {
        // 边界处理:空数组或只有1个元素的数组默认是升序
        if (array.Length <= 1)
            return true;
        
        // 从第2个元素开始和前一个对比
        for (int i = 1; i < array.Length; i++)
        {
            // 只要有一个元素比前一个小,就不是升序
            if (array[i] < array[i - 1])
            {
                return false;
            }
        }
        // 所有元素都符合升序规则
        return true;
    }

    static void Main()
    {
        int[] arrayName = {1,2,3,4,5};
        int[] arrayName2 = {5,4,3,6};
        
        Console.WriteLine(IsAscending(arrayName) ? "数组已按升序排列" : "数组未按升序排列");
        Console.WriteLine(IsAscending(arrayName2) ? "数组已按升序排列" : "数组未按升序排列");
    }
}

说明

这个实现仅用到了System命名空间下的基础功能,没有引入任何类库、扩展方法,完全符合你的要求。你原来的伪代码问题出在对比条件写错了,你写的arrayName[i] < arrayName[i] - 1是把当前元素减1之后和当前元素本身对比,不是和前一个元素对比,所以逻辑才会出错。

内容的提问来源于stack exchange,提问作者Maurice Filiatreault Hebert

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 23:45:03