Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检索数组中最小值的索引?_C#_Arrays - Fatal编程技术网

C# 如何检索数组中最小值的索引?

C# 如何检索数组中最小值的索引?,c#,arrays,C#,Arrays,我正在研究kmeans聚类算法,我需要找到数组中最小值的索引 例如,我为3个项目编写了以下代码: if ((DistanceArray[1, j] < DistanceArray[2, j]) && (DistanceArray[1, j] < DistanceArray[3, j])) { min= 1; } else if (DistanceArray[2, j] < DistanceArray[3, j]) { min= 2;

我正在研究
kmeans
聚类算法,我需要找到数组中最小值的索引

例如,我为3个项目编写了以下代码:

if ((DistanceArray[1, j] < DistanceArray[2, j]) && 
    (DistanceArray[1, j] < DistanceArray[3, j]))
{
    min= 1;
} 
else if (DistanceArray[2, j] < DistanceArray[3, j])
{
    min= 2;
}
else
{
    min= 3;
} 
if((DistanceArray[1,j]
但我需要从多维数组中检索最小值


如何做到这一点?

迭代每个值,并将其与当前最小值进行比较。将最小值声明为float.MaxValue,以便除最大值以外的任何数字都将小于它

float min = float.MaxValue; //set 'min' to the maximum value of a float
int minI, minJ;  //use if you want to track indices of the min value

for (int i = 0; i <= DistanceArray.GetUpperBound(0); i++)
{
    for (int j = 0; j <= DistanceArray.GetUpperBound(1); i++)
    {
        if (DistanceArray[i, j] <= min) //changed to '<= min' to which means if
        {                               //there are multiple minimum values the
            min = DistanceArray[i, j];  //one with the higher indices will be used
            minI = i;
            minJ = j;
        }
    }
}
float min=float.MaxValue//将“min”设置为浮点的最大值
int minI,minJ//如果要跟踪最小值的索引,请使用

对于(inti=0;i试试这个,这里arr是二维数组

   int? minValue = null;
   var i = 0;
   var j = 0;
    foreach (var m in arr)
    {
      var min1 =   m.Min();
      if (minValue == null || minValue > min1)
      {
          minValue = min1;
          i = m.ToList().IndexOf(min1);
          j = arr.ToList().IndexOf(m);
      }

    }

为什么要
不初始化min使其为null????int是一种值类型,它不能为null,它将有一个默认值0min在此上下文中不可为null。请将其设为int?min=null;或int min=int.Minvalue;并删除内部循环中的null检查。我会避免将null与min一起使用。只需执行
int min=Int32.value
然后将
if(min==null | | |
更改为
if(…
给@Matthew一些投票权来维护这个片段。是的,我知道,但是嵌套foreach对我来说效率非常低