PHP二分法查找之遞歸與迭代詳解

小云云
發布: 2023-03-22 14:46:01
原創
1078 人瀏覽過

關於遞歸和迭代分別的時間複雜度,遞歸的時間複雜度是O(N),而迭代的時間複雜度是O(logN),由y=N 和Y=logN兩條曲線我們知道,一定是O(logN)比較優一些。本文主要和大家分享PHP二分法查找之遞歸和迭代詳解,希望能幫助大家。

以下是兩段程式碼,和傻瓜式測效率的程式碼。

 $v) {  
            $right = $middle - 1;  
        } elseif ($arr[$middle] < $v) {  
            $left  = $middle + 1;  
        } else {  
            return $middle;  
        }  
    }  
    return -1;  
}  
  
  
$arr = [];  
for ($i=0;$i<300000;$i++){  
    $arr[] = $i;  
}  
list($first) = explode(" ",microtime());  
echo dichotomyIterationSearch($arr,count($arr),35387);echo '
'; list($second) = explode(" ",microtime()); echo round($second - $first,5)*1000000; function dichotomyRecursionSearch($arr, $low, $high, $v) { $middle = bcp(bcadd($low, $high), 2); if ($low < $high) { if ($arr[$middle] > $v) { $high = $middle - 1; return dichotomyRecursionSearch($arr, $low, $high, $v); } elseif ($arr[$middle] < $v) { $low = $middle + 1; return dichotomyRecursionSearch($arr, $low, $high, $v); } else { return $middle; } } elseif ($high == $low) { if ($arr[$middle] == $v) { return $middle; } else { return -1; } } return -1; } $arr = []; for ($i=0;$i<300000;$i++){ $arr[] = $i; } echo "
"; list($first) = explode(" ",microtime()); echo dichotomyRecursionSearch($arr,0, count($arr),35387);echo '
'; list($second) = explode(" ",microtime()); echo round($second - $first, 5)*1000000;
登入後複製

相關推薦:

二分法查找介紹及實例詳解

JavaScript如何使用二分法查找資料的方法介紹

二分法找出陣列中的元素

#

以上是PHP二分法查找之遞歸與迭代詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!