si il problema come hai già detto tu rimane la notazione asintotica che non cambia..
io avevo pensato ad una soluzione greedy che si spingeva fino a toccare O(n*logn). Il problema è che con questa soluzione non è assicurata la soluzione del prolbema per alcune disposizioni di array..
l'algo praticamente ordina l'array in senso crescente poi prende una coppia di valori, essendo ordinato in senso crescente prende ogni volta il primo e l'ultimo, il secondo e il penultimo ecc e poi effettua la ricerca in logn:
Codice PHP:
for($i=0;$i<(int)$size/2;$i++) {
$current = $array[$i] + $array[($size-1)-$i];
$searchArray = $array;
unset($searchArray[$i],$searchArray[($size-1)-$i]);
if ( ($j=array_search(($target-$current),$searchArray))!==FALSE ) {
die('Found')
}
}
questo addirittura non si cicla nemmeno tutto l'array perchè prendendo ogni volta una coppia di chiavi il for è fino a size/2
il fatto è che non sempre trova la soluzione
(in bocca al lupo per domani)