PHP 遞迴效率分析

2022-10-06 14:09:27 字數 1568 閱讀 7778

而且是差了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 題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。輸入 ...