av手机免费在线观看,国产女人在线视频,国产xxxx免费,捆绑调教一二三区,97影院最新理论片,色之久久综合,国产精品日韩欧美一区二区三区

php語言

PHP遞歸效率分析

時(shí)間:2025-03-09 14:19:37 php語言 我要投稿
  • 相關(guān)推薦

PHP遞歸效率分析

  而且是差了3倍的效率。所以,PHP中的遞歸一定要小心的對(duì)待。就跟隨百分網(wǎng)小編一起去了解下吧,想了解更多相關(guān)信息請(qǐng)持續(xù)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!

  最近寫了一個(gè)快速排序的算法,發(fā)現(xiàn)PHP中的遞歸效率不能一刀切,在各種不同的服務(wù)器中,可能會(huì)表現(xiàn)不一樣。

  復(fù)制代碼 代碼如下:

  function qsort(&$arr)

  {

  _quick_sort($arr, 0, count($arr) - 1);

  }

  /**

  * 采用遞歸算法的快速排序。

  *

  * @param array $arr 要排序的數(shù)組

  * @param int $low 最低的排序子段

  * @param int $high 最高的排序字段

  */

  function _quick_sort(&$arr, $low, $high)

  {

  $low_data = $arr[$low];

  $prev_low = $low;

  $prev_high = $high;

  while ($low < $high)

  {

  while ($arr[$high] >= $low_data && $low < $high) {

  $high--;

  }

  if ($low < $high) {

  $arr[$low] = $arr[$high];

  $low++;

  }

  while ($arr[$low] <= $low_data && $low < $high) {

  $low++;

  }

  if ($low < $high) {

  $arr[$high] = $arr[$low];

  $high--;

  }

  }

  $arr[$low] = $low_data;

  if ($prev_low < $low) {

  _quick_sort($arr, $prev_low, $low);

  }

  if ($low + 1 < $prev_high) {

  _quick_sort($arr, $low + 1, $prev_high);

  }

  }

  function quick_sort(&$arr)

  {

  $stack = array();

  array_push($stack, 0);

  array_push($stack, count($arr) -1);

  while (!empty($stack)) {

  $high = array_pop($stack);

  $low = array_pop($stack);

  $low_data = $arr[$low];

  $prev_low = $low;

  $prev_high = $high;

  while ($low < $high)

  {

  while ($arr[$high] >= $low_data && $low < $high) {

  $high--;

  }

  if ($low < $high) {

  $arr[$low] = $arr[$high];

  $low++;

  }

  while ($arr[$low] <= $low_data && $low < $high) {

  $low++;

  }

  if ($low < $high) {

  $arr[$high] = $arr[$low];

  $high--;

  }

  }

  $arr[$low] = $low_data;

  if ($prev_low < $low) {

  array_push($stack, $prev_low);

  array_push($stack, $low);

  }

  if ($low + 1 < $prev_high) {

  array_push($stack, $low + 1);

  array_push($stack, $prev_high);

  }

  }

  }

  下面是測(cè)試速度的代碼:

  復(fù)制代碼 代碼如下:

  function qsort_test1()

  {

  $arr = range(1, 1000);

  shuffle($arr);

  $arr2 = $arr;

  $t1 = microtime(true);

  quick_sort($arr2);

  $t2 = microtime(true) - $t1;

  echo "非遞歸調(diào)用的花費(fèi):" . $t2 . "n";

  $arr1 = $arr;

  $t1 = microtime(true);

  qsort($arr1);

  $t2 = microtime(true) - $t1;

  echo "遞歸調(diào)用的花費(fèi):" . $t2 . "n";

  }

  在我的IIS 服務(wù)器上(CGI)模式,我的測(cè)試結(jié)果是:

  非遞歸調(diào)用的花費(fèi):0.036401009559631

  遞歸調(diào)用的花費(fèi):0.053439617156982

  在我的Apache 服務(wù)器上,我的測(cè)試結(jié)果是:

  非遞歸調(diào)用的花費(fèi):0.022789001464844

  遞歸調(diào)用的花費(fèi):0.014809131622314

  結(jié)果完全相反,而PHP的版本是一樣的。

  看來對(duì)遞歸的效率要具體問題具體分析了。</p

【PHP遞歸效率分析】相關(guān)文章:

php遞歸遍歷刪除文件的方法10-25

php遞歸遍歷多維數(shù)組的方法10-06

PHP如何遞歸實(shí)現(xiàn)json類06-27

解讀php全排列遞歸算法代碼07-07

php遞歸函數(shù)三種方式11-07

php開發(fā)效率提高的方法11-02

PHP使用遞歸算法無限遍歷數(shù)組示例05-20

php遞歸創(chuàng)建和刪除文件夾的代碼09-21

用php自定義函數(shù)之遞歸刪除文件及目錄09-13