Дан отсортированный массив, число X, нужно найти два элемента сумма равна X, иначе вывести 0. O(nlogn)) (бинарный поиск)
$i = 0;
$j = count($array) - 1;
while ($i < $j) {
$sum = (int) $array[$i] + (int) $array[$j];
if ($sum == $k) {
echo "ok";
break;
}
if ($sum > $k) {
$j--;
} else {
$i++;
}
}
if ($i == $j) {
echo "no";
}
Это оказывается O(n)