日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
探討應(yīng)當(dāng)如何提高PHP遞歸效率

我們?cè)趯?shí)際代碼編程中,會(huì)發(fā)現(xiàn)PHP遞歸效率是非常低下的,對(duì)于程序員來說,他們必須要很好的處理PHP的遞歸。在這篇文章中我們具體向大家介紹了PHP遞歸效率的提高方法,希望對(duì)又需要的朋友有所幫助。

成都創(chuàng)新互聯(lián)專注于黃平網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供黃平營(yíng)銷型網(wǎng)站建設(shè),黃平網(wǎng)站制作、黃平網(wǎng)頁設(shè)計(jì)、黃平網(wǎng)站官網(wǎng)定制、小程序定制開發(fā)服務(wù),打造黃平網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供黃平網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

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

 
 
 
  1. function qsort(&$arr)  
  2. {  
  3. _quick_sort($arr, 0, count($arr) - 1);  
  4. }  
  5.  
  6. /**  
  7. * 采用遞歸算法的快速排序。  
  8. *  
  9. * @param array $arr 要排序的數(shù)組  
  10. * @param int $low ***的排序子段  
  11. * @param int $high ***的排序字段  
  12. */  
  13. function _quick_sort(&$arr, $low, $high)  
  14. {  
  15. $low_data = $arr[$low];  
  16. $prev_low = $low;  
  17. $prev_high = $high;  
  18. while ($low < $high)   
  19. {  
  20. while ($arr[$high] >= $low_data && $low < $high) {  
  21. $high--;  
  22. }  
  23. if ($low < $high) {  
  24. $arr[$low] = $arr[$high];  
  25. $low++;  
  26. }  
  27. while ($arr[$low] <= $low_data && $low < $high) {  
  28. $low++;  
  29. }  
  30. if ($low < $high) {  
  31. $arr[$high] = $arr[$low];  
  32. $high--;  
  33. }  
  34. }  
  35. $arr[$low] = $low_data;  
  36. if ($prev_low < $low) {  
  37. _quick_sort($arr, $prev_low, $low);  
  38. }  
  39. if ($low + 1 < $prev_high) {  
  40. _quick_sort($arr, $low + 1, $prev_high);  
  41. }  
  42. }  
  43.  
  44. function quick_sort(&$arr)  
  45. {  
  46. $stack = array();  
  47. array_push($stack, 0);  
  48. array_push($stack, count($arr) -1);  
  49. while (!empty($stack)) {  
  50. $high = array_pop($stack);  
  51. $low = array_pop($stack);  
  52. $low_data = $arr[$low];  
  53. $prev_low = $low;  
  54. $prev_high = $high;  
  55. while ($low < $high)   
  56. {  
  57. while ($arr[$high] >= $low_data && $low < $high) {  
  58. $high--;  
  59. }  
  60. if ($low < $high) {  
  61. $arr[$low] = $arr[$high];  
  62. $low++;  
  63. }  
  64. while ($arr[$low] <= $low_data && $low < $high) {  
  65. $low++;  
  66. }  
  67. if ($low < $high) {  
  68. $arr[$high] = $arr[$low];  
  69. $high--;  
  70. }  
  71. }  
  72. $arr[$low] = $low_data;  
  73. if ($prev_low < $low) {  
  74. array_push($stack, $prev_low);  
  75. array_push($stack, $low);  
  76. }  
  77. if ($low + 1 < $prev_high) {  
  78. array_push($stack, $low + 1);  
  79. array_push($stack, $prev_high);  
  80. }  
  81. }  

下面是PHP遞歸效率測(cè)試速度的代碼:

 
 
 
  1. function qsort_test1()  
  2. {  
  3. $arr = range(1, 1000);  
  4. shuffle($arr);  
  5. $arr2 = $arr;  
  6. $t1 = microtime(true);  
  7. quick_sort($arr2);  
  8. $t2 = microtime(true) - $t1;  
  9. echo "非遞歸調(diào)用的花費(fèi):" . $t2 . "\n";  
  10. $arr1 = $arr;  
  11. $t1 = microtime(true);  
  12. qsort($arr1);  
  13. $t2 = microtime(true) - $t1;  
  14. echo "遞歸調(diào)用的花費(fèi):" . $t2 . "\n";  
  15. } 

#t#在我的IIS 服務(wù)器上(CGI)模式,我的PHP遞歸效率測(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

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

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


分享題目:探討應(yīng)當(dāng)如何提高PHP遞歸效率
URL網(wǎng)址:http://www.5511xx.com/article/cdeocjs.html