一尘不染

从数字数组中获取最小值或最大值的最佳方法是什么?

algorithm

假设我有一个数字数组: [2,3,3,4,2,2,5,6,7,2]

在该数组中找到最小值或最大值的最佳方法是什么?

现在,为了获得最大值,我正在遍历数组,并将变量重设置为大于现有值的值:

var myArray:Array /* of Number */ = [2,3,3,4,2,2,5,6,7,2];

var maxValue:Number = 0;

for each (var num:Number in myArray)
{
    if (num > maxValue)
        maxValue = num;
}

这似乎并不是执行此操作的最佳方法(我尽可能尝试避免循环)。


阅读 276

收藏
2020-07-28

共1个答案

一尘不染

其他所有人的理论答案都很好,但是我们要务实。ActionScript提供了您需要的工具,因此在这种情况下甚至不必编写循环!

首先,请注意,Math.min()并且Math.max()可以接受任意数量的参数。同样,了解对象apply()可用的方法也很重要Function。它允许您使用来将参数传递给函数Array。让我们充分利用两者:

var myArray:Array = [2,3,3,4,2,2,5,6,7,2];
var maxValue:Number = Math.max.apply(null, myArray);
var minValue:Number = Math.min.apply(null, myArray);

最好的部分是:“循环”实际上是使用本机代码(在Flash Player内部)运行的,因此它比使用纯ActionScript循环搜索最小值或最大值要快。

2020-07-28