假设我有一个数字数组:[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;
}
这似乎不是执行此操作的最佳方式(我尽可能避免循环)。
最佳答案
其他人的理论答案都很简洁,但让我们务实一点。 ActionScript 提供了您需要的工具,因此在这种情况下您甚至不必编写循环!
首先,请注意 Math.min()
和 Math.max()
可以接受任意数量的参数。此外,了解可用于 Function
对象的 apply()
方法也很重要。它允许您使用 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);
这是最好的部分:“循环”实际上是使用 native 代码运行的(在 Flash Player 中),因此它比使用纯 ActionScript 循环搜索最小值或最大值更快。
关于algorithm - 从数字数组中获取最小值或最大值的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/424800/