您的位置:首页 > 编程语言 > PHP开发

PHP 二分查找

2015-03-26 00:11 246 查看
第一种方法:【二分查找要求】:1.必须采用顺序存储结构 2.必须按关键字大小有序排列。   【优缺点】折半查找法的优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。   【算法思想】首先,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。
<?php
2     #二分查找
3     function binarySearch(Array $arr, $target) {
4         $low = 0;
5         $high = count($arr) - 1;
6
7         while($low <= $high) {
8             $mid = floor(($low + $high) / 2);
9             #找到元素
10             if($arr[$mid] == $target) return $mid;
11             #中元素比目标大,查找左部
12             if($arr[$mid] > $target) $high = $mid - 1;
13             #重元素比目标小,查找右部
14             if($arr[$mid] < $target) $low = $mid + 1;
15         }
16
17         #查找失败
18         return false;
19     }
20
21     $arr = array(1, 3, 5, 7, 9, 11);
22     $inx = binarySearch($arr, 1);
23     var_dump($inx);
24 ?>

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: