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对我来说效率非常低