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

标签 algorithm actionscript-3 apache-flex actionscript complexity-theory

假设我有一个数字数组:[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/

相关文章:

arrays - 如何在未排序的只读数组中找到第 K 个最小的整数?

actionscript-3 - 在运行时重新定义命名函数

javascript - 闪存 CS4 错误 1084 : Expecting Identifier before Var

javascript - 无法从 JavaScript 调用 AS3。闪光

apache-flex - 我应该使用PurePDF还是AlivePdf

PHP If/ELSE 或 Switch/Case 语句

c++ - 将双 vector 拆分为相等的部分

apache-flex - 如何获取加载的 swf 的背景颜色?

apache-flex - Flex : How to keep code away from MXML

algorithm - 用有向图实现最短路径算法的最佳方法