而且是差了3倍的效率。所以,php中的遞迴一定要小心的對待。
最近寫了乙個快速排序的演算法,發現php中的遞迴效率不能一刀切,在各種不同的伺服器中,可能會表現不一樣。
複製** **如下:
function qsort(&$arr)
/**
* 採用遞迴演算法的快速排序。
* * @param array $arr 要排序的陣列
* @param int $low 最低的排序子段
* @param int $high 最高的排序字段
*/ function _quick_sort(&$arr, $low, $high)
if ($low < $hwww.cppcns.comigh)
while ($arr[$low] <= $low_data && $low < $high)
if ($low < $high)
} $arr[$low] = $low_data;
if ($prev_low < $low)
if ($low + 1 < $prev_high)
} function quick_sorejiudt(&$arr)
if ($low < $high)
while ($arr[$low] <= $low_data && $low < $high)
if ($low < $high)
} $arr[$low] = $low_data;
if ($prev_low &ejiudlt; $low)
if ($low + 1 < $prev_high) } }
下面是測試速度的**:
複製** **如下:
function qsort_test1()
{ $arr = range(1, 1000);
shuffle($arr);
$arr2 = $arr;
$t1 = microtime(true);
quick_sort($arr2);
$t2 = microtime(true) - $t1;
echo "非遞迴呼叫的花費:" . $t2 . "\n";
$arr1 = $arr;
$t1 = microtime(true);
qsort($arr1);
$t2 = microtime(true) - $t1;
echo "遞迴呼叫的花費:" . $t2 . "\n"; }
在ejiud我的iis 伺服器上(cgi)模式,我的測試結果是:
非遞迴呼叫的花費:0.036401009559631
遞迴呼叫的花費:0.053439617156982
在我的apache 伺服器上,我的測試結果是:
非遞迴呼叫的花費:0.022789001464844
遞迴呼叫的花費:0.014809131622314
結果完全相反,而php的版本是一樣的。
看來對遞迴的效率要具體問題具體分析了。
本文標題: php 遞迴效率分析
本文位址:
PHP 中的遞迴效率
php的遞迴效率一般認為是低效的。大概一年前,我寫了一篇博文,對三種遍歷樹的方法進行了比較,發現遞迴演算法的效率最低。而且是差了3倍的效率。所以,php中的遞迴一定要小心的對待。最近寫了乙個快速排序的演算法,發現php中的遞迴效率不能一刀切,在各種不同的伺服器中,可能會表現不一樣。function ...
php遞迴分析
舉乙個通俗的例子 有乙個8倆重的蘋果要你切成重量相等的若干份,每乙份的重量不能大於1倆。你肯定會想到這樣做 1.第一刀先把乙個蘋果切成重量均等的2份a1和a2 2.再把其中的乙份a1切成重量均等的兩份a11和a12,把a2切成均等的兩份a21和a22 3.把a11切成均等的兩份 4.直到每一小份都小...
遞迴效率與非遞迴效率
題目1384 二維陣列中的查詢時間限制 1 秒 記憶體限制 32 兆 特殊判題 否 提交 10472 解決 2093 題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入 ...