php查找

来源:互联网 发布:高速收费查询软件 编辑:程序博客网 时间:2024/06/08 03:58
<?php

Class Select
{

/*
@content 二分查找非递归方式实现
@params  $arr array 被查找的内容 有序的下标连续的索引数组
@params  $select mixed 要查找的内容
@parmas  $min   int  键值的开始位置
@params  $max   int  键值的结束位置
@return  $key   int  要查找的值所在的位置
 */
public function Binary($arr,$select,$min,$max)
{
while ($min<=$max) {
$half = ceil(($min+$max)/2);
if ($arr[$half] > $select) {
$max = $half-1;
} elseif ($arr[$half] < $select) {
$min = $half +1;
} else {
return $half;
}
}

return -1;
}

/*
@content 二分查找递归方式实现
@params  $arr array 被查找的内容 有序的下标连续的索引数组
@params  $select mixed 要查找的内容
@parmas  $min   int  键值的开始位置
@params  $max   int  键值的结束位置
@return  $key   int  要查找的值所在的位置
 */

public function BinaryRecursive($arr,$select,$min,$max)
{
$half = ceil(($min+$max)/2);
if ($arr[$half] > $select) {
return $this->BinaryRecursive($arr,$select,$min,$half-1);
} elseif ($arr[$half] < $select) {
return $this->BinaryRecursive($arr,$select,$half+1,$max);
} else {
return $half;
}
}

}
?>