Есть массив Array ( [0] => 29 [1] => 30 [2] => 31 [3] => 32 [4] => 33 [5] => 34 [6] => 35 ) Подскажите как для значения 33 найти самое близкое большое значение. для 33 это будет 34
мопед не мой, я только открутил педали PHP: <?php function BinSearchNear($arr, $find) { $first = $arr[0]; $last = $arr[(sizeof($arr) - 1)]; if($find < $first || $find > $last) { return $result = "Элемент находится вне заданного массива"; } $min = 0; $max = sizeof($arr) - 1; while($min < $max) { $pos = (($min + $max) - ($min + $max) % 2) / 2; if($find <= $arr[$pos]) $max = $pos; else $min = $pos + 2;//+ 1; } //if($arr[$max] == $find) return $result = $max + 1; /* else return $result = "Элемент не найден"; */ } $someArr = array(29, 30, 31, 32, 33, 34, 35); echo $someArr[BinSearchNear($someArr, 33)]; ?> upd: если где-то пропущен ключ, табор уходит в небо. Если массив из одного элемента, то тоже фигня. Так что лучше допилить.