如何在不使用C#Math函数的情况下找到数组中的最小值?

时间:2016-03-04 15:17:49

标签: c# arrays algorithm

我正在使用C#,我正在做一些修改问题。我试图在随机生成的数组(我编码)中找到最小的值。我的老师要求我们在不使用.Min函数的情况下找到该数组中的最小值,因为这是一个算法模块。下面的代码显示了我编写的用于创建数组的内容。不知道如何从这里开始。谢谢你们。

int[] myRandom = new int[10];
int min = 0;
int max = 19;

Random randNum = new Random();

for (int i = 0; i < 10; i++)
{
    myRandom[i] = randNum.Next(min, max);
}

for (int i = 0; i < 10; i++)
{
    Console.WriteLine(myRandom[i]);
}

2 个答案:

答案 0 :(得分:9)

简单的方法是使用Min() linq扩展方法:

var min = myRandom.Min();
Console.WriteLine(min);

但如果你需要手动完成,你可以这样做:

//int min = int.MaxValue;                    //This variable stores current min value during each iteration.
int min = myRandom[0];                       //If first value of myRandom is the minimum then ok, you already have it, if not it will be replaced in iterations

for (int i = 0; i < myRandom.Length; i++)
    if (myRandom[i] < min)                   //Compare each value of the array with the current min value
        min = myRandom[i];

Console.WriteLine(min);

答案 1 :(得分:2)

这是最好的解决方案。 您可以找到最小值并同时生成数组,如下所示:

int minValue = int.MaxValue;
for (int i = 0; i < 10; i++)
{
    myRandom[i] = randNum.Next(min, max);
    if (myRandom[i] < minValue)
    {
        minValue = myRandom[i];
    }
}
Console.WriteLine(minValue);

通过这样做,您不必第二次循环数组以找到最小值。