Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有更快的方法从整数数组中选取最小数?_C# - Fatal编程技术网

C# 有没有更快的方法从整数数组中选取最小数?

C# 有没有更快的方法从整数数组中选取最小数?,c#,C#,例如,我有一个如下所示的数组: int[] arrayOne = new int[10]{3,1,29,5,2,4,7,10,38,42}; 下面是我从数组中选取最小数的方法 int pickMinNumber (int[] intArray) { int result = intArray[0]; for (int i = 0; i < arrayOne.Length; i++) {

例如,我有一个如下所示的数组:

int[] arrayOne = new int[10]{3,1,29,5,2,4,7,10,38,42};
下面是我从数组中选取最小数的方法

       int pickMinNumber (int[] intArray)
        {
          int result = intArray[0];
          for (int i = 0; i < arrayOne.Length; i++)
           {
                if(intArray[i] < result)
                   result = intArray[i];
           }
          return result;
        }
int pickMinNumber(int[]intArray)
{
int result=intArray[0];
for(int i=0;i
有没有更快的方法来选择最小数量?

使用LINQ中的Min()函数

var min = arrayOne.Min();
在LINQ中使用Min()函数

var min = arrayOne.Min();
有没有更快的方法来选择最小数量

不,这是最快的。除非数组被排序,或者它的元素遵循任何其他特殊的放置策略,否则您无法更快地找到最小值:您必须检查所有元素以找到最小值,因此任何算法都将执行与代码基本相同的操作

有没有更快的方法来选择最小数量



不,这是最快的。除非数组被排序,或者它的元素遵循任何其他特殊的布局策略,否则您无法更快地找到最小值:您必须检查所有元素以找到最小值,因此任何算法都可以做与代码基本相同的事情。

此算法也称为线性搜索,只使用一个循环,即O(n)算法,它不能再快了

该算法也称为线性搜索,只使用一个循环,即O(n)算法,它不能更快

假设我在5张纸上写下5个数字,然后面朝下。我给你看4个数字。然后,我问你5个数字中最小的是什么你能在看不到第五个数字的情况下回答这个问题吗?如果答案是否定的,那么你当然不能再快了。

假设我在5张纸上写5个数字,然后面朝下。我给你看4个数字。然后,我问你5个数字中最小的是什么你能在没有看到第五个数字的情况下回答这个问题吗?如果答案是否定的,那么当然,你不能再快了。

在算法方面,否定。另请参见“从数组中选取最小数”——正如@dasblinkenlight提示的那样,你当前的实现可以减少到
返回数组[0]
,因为当前提供的输入似乎是按升序排序的。这取决于您使用的数据结构和顺序。如果它真的是一个有序列表(看看插入排序),您可以使用第一个项来查找最低值,这是它得到的最快值:O(1)。您的for循环中有一对一的错误。您不需要再次比较第一个元素,也不需要检查最后一个元素。使用(
for(int i=1;i返回数组[0]
,因为当前提供的输入似乎是按升序排序的。这取决于您使用的数据结构和顺序。如果它真的是一个有序列表(看看插入排序),您可以使用第一个项来查找最低值,这是它得到的最快值:O(1)。您的for循环中有一对一的错误。您不需要再次比较第一个元素,也不需要检查最后一个元素。使用(
for(int i=1;i
最快的方法。虽然这和最快的方法不一样,但是使用@roughnex的方法呢…?在引擎盖下,他的方法是一样的。这就是为什么Maxwell说这是编写最快的方法。但这和最快的速度不一样。