从变量中获取最小值和最大值的正确方法

本文关键字:方法 最大值 变量 获取 最小值 | 更新日期: 2023-09-27 18:12:43

我需要从不同的变量中获得最小值和最大值。我得到变量值xMin、yMin、xMax和yMax,我需要找到最小xMin值、最小yMin值、最大xMax值和最大yMax值。

我写的代码工作:

double xmin , ymin  , xmax  , ymax = 0;
double[][] arrayMinMax = new double[4][];
for (int m = 0; m < 4; m++)
{
    arrayMinMax[m] = new double[shapes_id.Count];
}
for (int m = 0; m < shapes_id.Count; m++)
{
    GetBounds(out xmin, out ymin, out xmax, out ymax);
    arrayMinMax[0][m] = xmin;
    arrayMinMax[1][m] = ymin;
    arrayMinMax[2][m] = xmax;
    arrayMinMax[3][m] = ymax;
}
xmin = arrayMinMax[0].Min();
ymin = arrayMinMax[1].Min();
xmax = arrayMinMax[2].Max(); 
ymax = arrayMinMax[3].Max();

GetBounds为每个形状返回值,我需要一起找到所有形状的最小点和最大点。shapes_id.Count返回形状数。

这段代码可以正常工作,但我仍然不懂c#,我想知道的是,我从这样的东西中写的代码是正确的,或者可能有更好的方法。

Thanx

从变量中获取最小值和最大值的正确方法

如果您只对其中的一些值感兴趣,我会避免构建整个数组。这里有一个例子,当发现一个更大或更小的值时,它会立即丢弃以前的maxmin值。

double xmin, ymin, xmax, ymax;
xmin = ymin = double.PositiveInfinity;
xmax = ymax = double.NegativeInfinity;
for (int m = 0; m < shapes_id.Count; m++)
{
    double x1, y1, x2, y2;
    GetBounds(out x1, out y1, out x2, out y2);
    xmin = Math.Min(x1, xmin);
    ymin = Math.Min(y1, ymin);
    xmax = Math.Max(x2, xmax);
    ymax = Math.Max(y2, ymax);
}

以后是否需要存储在数组中的值?如果没有,您可以确定循环中的最小值和最大值。所以你只迭代了一次,而不是5次。

double xmin = double.MaxValue, ymin =double.MaxValue , xmax = double.MinValue, ymax = double.MinValue;
foreach (var shape in shapesId) {
   double txmin, txmax, tymin, tymax;
   GetBounds(out txmin, out txmax, out tymin, out tymax);
   if (txmin < xmin) xmin = txmin;
   if (tymin < ymin) ymin = tymin;
   if (txmax > xmax) xmax = txmax;
   if (tymax > ymax) ymax = tymax;
}
double max(double[] a){
    double max = a[0];
    for(int i = 0;  < a.Length; i++){
       if(max < a[i]) max  = a[i];
   }
return max;
}

min。

然后调用max(arrayMinMax[1]);