作者AchieveDream (相信自己的决定)
看板PHP
标题Re: [问题] 判断一数字是否介於某些范围之内
时间Sun Jun 14 03:28:57 2015
※ 引述《red0whale (red whale)》之铭言:
: 假设我有一阵列变数$a=[2,7,14,28,32,38,41,49];
: 今假设一个数$b
: 请问怎麽判断$b是否介於2~7、14~28、32~38、41~49这些范围之内?
: (亦即$b是否介於$a的数值范围内,假设$a有偶数个元素)
觉得题目满有趣的,因此尝试一下,这也是我第一次PO文~
function is_in_range(array $range = [], $search)
{
$high = count($range) - 1;
if ((-1 === $high) || 0 === ($high & 1))
{
return false;
}
$low = 0;
$search = intval($search);
while ($low <= $high)
{
$mid = (($low + $high) >> 1);
if ($search === $range[$mid])
{
return true;
}
else if ($search > $range[$mid])
{
if ($mid === $high)
{
return false;
}
else if ((0 === ($mid & 1)) && ($search < $range[$mid+1]))
{
return true;
}
$low = $mid + 1;
}
else
{
if ($mid === $low)
{
return false;
}
else if ((1 === ($mid & 1)) && ($search > $range[$mid-1]))
{
return true;
}
$high = $mid - 1;
}
}
return false;
}
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.138.47.102
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1434223740.A.D0C.html