Mailinglisten-Archive |
Daniel Nemetz wrote: > > Ulf wrote: > > >Man prüft nie mit einer Schleife, sondern indiziert das Array über die > >fraglichen Values. Das aufwendige Suchen entspricht einem Aufwand von > >n/2, der Test ob ein Arrayelement existiert hat einen konstanten Aufwand > >von 1. > > danke für die verbesserung, sag mal kannst du mir das nochmal in für mich > verständliche worte kleiden ? Du willst, wenn ich Dich richtig verstanden habe: $gefunden[] = $wert; function istBekannt($value) { global $gefunden; reset($gefunden); while (list($k, $v)=each($gefunden)) if ($v == $value) return true; return false; } istBekannt() braucht im Mittel für eine Antwort n/2 Operation mit n = count($gefunden). Ist also linear und abhängig von n. Ich will: $gefunden[$wert] = true (oder $wert) function istBekannt($value) { global $gefunden; return isset($gefunden[$value]); } istBekannt() benötigt jetzt genau 1 Operation unabhängig von n. Hoffentlich hat es jetzt nicht den falschen getroffen, aber nach der letzten Diskussion darüber wie man es ineffektiv machen kann, trigger ich sehr auf das Thema. Ulf
php::bar PHP Wiki - Listenarchive