【发布时间】:2014-06-10 16:23:39
【问题描述】:
目前,我正在使用以下代码替换数组中大于$value的元素
for($i=0;$i<$row;$i++) {
for($j=0;$j<$column;$j++) {
if($solution[$i][$j] >= $value) {
$solution[$i][$j] = -1;
}
}
}
有没有更好更快的方法呢?我有一个复杂的算法来生成谜题,我正在尝试优化执行时间。这段代码是算法的一部分。
编辑:
这些是我通过尝试不同的解决方案得到的执行时间:
For loops:
4.1007995605469E-5
Answer by mark:
0.00057792663574219
Foreach loops:
2.9087066650391E-5
【问题讨论】:
-
需要多长时间,您希望多长时间?
-
只是想知道,是否可以在不循环的情况下替换数组元素。我不知道确切的执行时间。
-
这个问题不做基准就无法回答。请执行它们并与使用
array_walk()、array_map()和其他功能的解决方案进行比较。 -
因此,您当前的解决方案将在 O(n^2) 中运行。为了做得更好,我们可能需要了解
$value的已知时间与$solution数组的构建时间。例如,您可以在填充数组时进行替换吗? -
$solution 是 4x4(最多可以是 9x9)预填充了值(例如:4X4 可能包含从 1 到 16 的值)。在算法的后期,我回溯并需要将 $solution 的值替换为 -1(这是数组中所有元素的初始值)。
标签: php arrays algorithm optimization execution