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

时间:2014-02-01 20:25:44

标签: 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;
}
else
{
    min= 3;
} 

但我需要从多维数组中检索最小值。

怎么做呢?

2 个答案:

答案 0 :(得分:1)

迭代每个值并将其与当前最小值进行比较。将min声明为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;
        }
    }
}

答案 1 :(得分:0)

试试这个,这里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);
      }

    }