This article mainly introduces PHP to implement the array search function based on the bisection method, and analyzes the while loop and recursion## in combination with examples. #Calling Algorithm ImplementationBisectionRelated implementation skills of the search function, friends who need it can refer to this article. This article describes the example of PHP implementing the array search function based on the bisection method. Sharing it with everyone for your reference, the details are as follows:
Dichotomy. Use the while loop method and the recursive calling method respectively.<?php // 二分法的使用数组必须是有序的,或升序,或降序 $arr = array( 1, 3, 5, 7, 9, 13 ); // 递归调用(相比较好理解 function bsearch_r($v, $arr, $low, $high){ if ($low > $high) {// 先判断结束条件 return -1; } $i = intval(($high + $low)/2); if ($arr[$i] > $v){ return bsearch_r($v, $arr, $low, $i-1);// 递归 } else if ($arr[$i] < $v){ return bsearch_r($v, $arr, $i+1, $high); } else { return $i; } } echo bsearch_r(1, $arr, 0, count($arr)-1);// 0 echo '<hr/>'; echo bsearch_r(14, $arr, 0, count($arr)-1);// -1 echo '<hr/>'; // while循环 function bsearch($v, $arr){ $low = 0; $high = count($arr)-1;// 使用下标,注意减去1 // 注意凡是使用到while的时候,一定要防备无限循环的时候,注意终止循环的判断。 while($low <= $high){// 比如$low<=$high,这个等于号必须有。 $i = intval(($high + $low)/2); if ($arr[$i] > $v){ $high = $i-1; } else if ($arr[$i] < $v){ $low = $i+1; } else { return $i; } } return -1;// 找不到的时候返回-1 } echo bsearch(13, $arr);// 5 echo '<hr/>'; echo bsearch(14, $arr);// -1
Related recommendations:
PHP single file and multiplefile uploadExample_php example
How PHP implements the Naive Bayes algorithm for machine learning
php implements the Fibonacci sequence method
The above is the detailed content of Example of PHP implementation of array search function based on dichotomy [loop and recursive algorithm] _php skills. For more information, please follow other related articles on the PHP Chinese website!