PHP 二分查找
来源:互联网 发布:软件定制骗局 编辑:程序博客网 时间:2024/05/22 20:06
第一种方法:
【二分查找要求】: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 ?>
//递归版本
functionbin_sch($array,$low,$high,$k){
if
($low<=$high){
$mid=intval(($low+$high)/2);
if
($array[$mid]==$k){
return
$mid;
}elseif($k<$array[$mid]){
returnbin_sch($array,$low,$mid-1,$k);
}
else
{
returnbin_sch($array,$mid+1,$high,$k);
}
}
return
-1;
}
//非递归版本
functionbinsearch($x,$a){
$c=count($a);
$lower=0;
$high=$c-1;
while
($lower<=$high){
$middle=intval(($lower+$high)/2);
if
($a[$middle]>$x)
$high=$middle-1;
elseif($a[$middle]<$x)
$lower=$middle+1;
else
return
$middle;
}
return
-1;
}
0 0
- PHP 顺序查找、二分查找
- php二分查找法
- php二分查找
- php 二分算法查找
- php顺序、二分查找
- php 二分查找
- php-二分查找
- PHP 二分查找
- PHP 二分查找
- PHP二分查找
- 二分查找算法 php
- php 二分查找
- php二分查找算法
- 二分查找法 php
- PHP二分查找
- php二分查找法
- php 二分查找
- 二分查找算法 php
- Cat VS Dog
- 杭电1095Java版
- Longest Common Prefix
- 快排--java实现
- 九度OJ-1101-计算表达式
- PHP 二分查找
- 2015-3-25C语言学习日记
- Android Asynchronous Http Client-Android异步网络请求客户端接口
- Hash Buckets Concept
- UVA - 11991 Easy Problem from Rujia Liu?
- ONF组织的SDN架构文档——概述(一)
- 不是Oculus在主导虚拟现实市场?那是谁?
- 批量插入sheet表,并按顺序命名
- 如何在Gentoo上使用Radeon显卡的开源驱动