<?php
$c = [1,2,4,8,18,20,33,66,99];
function indexOfNumb(array $base, $x) {
$leftI = 0;
$rightI = count($base) - 1;
do {
$centerI = floor(($rightI + $leftI) / 2);
if($base[$centerI] === $x) {
return $centerI;
} elseif($base[$centerI] > $x && $centerI !== $rightI) {
$rightI = $centerI;
} elseif($base[$centerI] < $x && $centerI !== $leftI) {
$leftI = $centerI;
} else {
return ($x - $base[$leftI] > $base[$rightI] - $x) ? $leftI : $rightI;
}
} while(1);
}
var_dump(indexOfNumb($c, 65));
- Output for 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.7
- float(6)
preferences:
200.95 ms | 404 KiB | 227 Q