二分查找需要数组有序,效率为O(logn)
<code><span><span><?php </span><span>#二分查找</span><span><span>function</span><span>binarySearch</span><span>(Array <span>$arr</span>, <span>$target</span>)</span> {</span><span>$low</span> = <span>0</span>; <span>$high</span> = count(<span>$arr</span>) - <span>1</span>; <span>while</span>(<span>$low</span> $high</span>) { <span>$mid</span> = floor((<span>$low</span> + <span>$high</span>) / <span>2</span>); <span>#找到元素</span><span>if</span>(<span>$arr</span>[<span>$mid</span>] == <span>$target</span>) <span>return</span><span>$mid</span>; <span>#中元素比目标大,查找左部</span><span>if</span>(<span>$arr</span>[<span>$mid</span>] > <span>$target</span>) <span>$high</span> = <span>$mid</span> - <span>1</span>; <span>#重元素比目标小,查找右部</span><span>if</span>(<span>$arr</span>[<span>$mid</span>] $target</span>) <span>$low</span> = <span>$mid</span> + <span>1</span>; } <span>#查找失败</span><span>return</span><span>false</span>; } <span>$arr</span> = <span>array</span>(<span>1</span>, <span>3</span>, <span>5</span>, <span>7</span>, <span>9</span>, <span>11</span>); <span>$inx</span> = binarySearch(<span>$arr</span>, <span>1</span>); var_dump(<span>$inx</span>); <span>?></span></code>
以上就介绍了php 二分查找,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。