使用迭代在一个暗淡的数组中找到最低值(不能使用 max/min)

Finding lowest Value in one dim array using iteration (Can't use max/min)

我目前正在学校学习 c#。

我的导师要求我:

没有向我展示完整的代码示例。在不使用最小值或最大值属性的情况下,我还有哪些其他方法可以解决这个问题?

我很抱歉没有比这更清楚。这只是我课程的第 3 周,所以我对编程的总体理解很低。

    while (j < myDoubles.Length)
    {
    double myDoubles1 = myDoubles[j];
    j++;
    double myDoubles2 = myDoubles[j];
    j++;
    double myDoubles3 = myDoubles[j];
    j++;
    double myDoubles4 = myDoubles[j];
    j++;
    double myDoubles5 = myDoubles[j];
    j++;

    while (myDoubles1 < myDoubles2 && myDoubles1 < myDoubles3 && myDoubles1 < myDoubles4 && myDoubles1 < myDoubles5)
    {
      Console.WriteLine("myDoubles[1] is the lowest");
      break;
    }
    while (myDoubles2 < myDoubles1 && myDoubles2 < myDoubles3 && myDoubles2 < myDoubles4 && myDoubles2 < myDoubles5)
    {
      Console.WriteLine("myDoubles[2] is the lowest");
      break;
    }
    while (myDoubles3 < myDoubles1 && myDoubles3 < myDoubles2 && myDoubles3 < myDoubles4 && myDoubles3 < myDoubles5)
    {
      Console.WriteLine("myDoubles[3] is the lowest");
      break;
    }
    while (myDoubles4 < myDoubles1 && myDoubles4 < myDoubles2 && myDoubles4 < myDoubles3 && myDoubles4 < myDoubles5)
    {
      Console.WriteLine("myDoubles[4] is the lowest");
      break;
    }
    while (myDoubles5 < myDoubles1 && myDoubles5 < myDoubles2 && myDoubles5 < myDoubles3 && myDoubles5 < myDoubles4)
    {
      Console.WriteLine("myDoubles[5] is the lowest");
      break;
    }

试试这个:

double minValue(double[] myDoubles){
    double min = Double.MaxValue;
    for(int i=0; i<myDoubles.Length; i++)
    {
        if(myDoubles[i]<min)
            min = myDoubles[i];
    }
    return min;
}

您需要将 min 变量设置为 MaxValue,因为您不知道最大值是多少。例如,如果您的用户给您 1000 具有最小值,但您将变量设置为 0,则最终最小值将为 0, 显然是错误的!

您不能简单地执行以下操作吗:这是求最大值

public static double? FindMaximum(double[] container)
{
     double? max = null;
     foreach(var content in contaner)
         if(content > max || max == null)
              max = content as double;

     return max;
}

这种方法非常简单,您遍历数组中的每个项目。然后将最大值与内容进行比较,如果它高于先前的值,它将修改变量。然后 returns 数组中的最大值。

这不是理想的方法之一,而是一种解决方案。

我最终做到了这一点,完全满足了老师的要求。感谢 Greg 和 Ludovic 提供的示例。您对找出此作业的答案提供了很大帮助!

 int j = 0;
 double min = 0; 
 for (int i = 0; i < myDoubles.Length; i++)
  {
    if (i == 0)
    {
      min = myDoubles[i];
    }
    else if (min > myDoubles[i])
    {
      min = myDoubles[i];
      j = i;
    }
  }
  Console.WriteLine("myDoubles[{0}] = {1} is the lowest value in the array", j, min);