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

如何在C#中不排序一维数组,依次获取各最小值及对应索引

在C#中不排序数组依次获取下一个最小值的索引

实现思路

你提到的两层循环思路完全可行,核心是通过标记已选中的索引避免重复选取之前找到的最小值,每一轮遍历都在未被标记的元素里寻找当前最小值,记录对应的索引。

代码实现

using System;

class Program
{
    static void Main()
    {
        int[] a = { 10, 5, 20, 3 };
        int length = a.Length;
        // 标记数组,记录索引是否已被选中
        bool[] isSelected = new bool[length];
        // 存储每一轮找到的最小值索引
        int[] minIndices = new int[length];

        for (int i = 0; i < length; i++)
        {
            // 初始化当前最小值为极大值,当前索引为无效值
            int currentMin = int.MaxValue;
            int currentIndex = -1;

            // 内层循环遍历数组,筛选未被选中的最小值
            for (int j = 0; j < length; j++)
            {
                if (!isSelected[j] && a[j] < currentMin)
                {
                    currentMin = a[j];
                    currentIndex = j;
                }
            }

            // 记录当前索引并标记为已选中
            minIndices[i] = currentIndex;
            isSelected[currentIndex] = true;
        }

        // 输出结果
        Console.WriteLine("依次找到的最小值索引:");
        for (int i = 0; i < minIndices.Length; i++)
        {
            Console.WriteLine($"第{i+1}个最小值的索引:{minIndices[i]},对应值:{a[minIndices[i]]}");
        }
    }
}

代码说明

  • isSelected数组:用来标记已被选为最小值的索引,确保每一轮只在未被选中的元素中查找。
  • 外层循环:执行次数等于数组长度,对应寻找第1到第N个最小值。
  • 内层循环:遍历整个数组,找出未被标记元素中的最小值,记录其索引。
  • 每轮找到索引后,将该索引标记为已选中,并存入结果数组。

运行代码后输出结果:

依次找到的最小值索引:
第1个最小值的索引:3,对应值:3
第2个最小值的索引:1,对应值:5
第3个最小值的索引:0,对应值:10
第4个最小值的索引:2,对应值:20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:15:42