Hallo Miky,
ah, ein par neue Würmer sind aus der Nase hervorgekrochen.
- Es muss ein hin- und her sein
- Es gibt mehr als einen Treffer
- Die Treffer müssen markiert werden
Dir ist das vermutlich alles selbstverständlich, aber Du erklärst uns nicht, wo du herkommst und wo du hinwillst, und darum ist das für uns nur Rätsel raten. Dir kann keiner helfen, wenn Du uns nicht deine Aufgabenstellung vollständig beschreibst. Zur Zeit habe ich noch einige mögliche Varianten im Kopf, die aber sehr verschieden sind und die von Details deiner Problemstellung abhängen.
Ich versuche nochmal eine eigene Fassung, vielleicht kommen wir damit zu einer systematischen Darstellung. Ich halte mich ganz bewusst von konkretem PHP fern.
Wir haben eine Liste von N Zahlenpaaren, besteht aus einem "unten" und einem "oben" Wert. Startpunkt ist der erste Eintrag in der Liste.
Nun wird abwechselnd eine "oben" und eine "unten" Suche ausgeführt. Es beginnt mit einer "oben" Suche, Vergleichswert ist der "oben" Wert im Listeneintrag. Gesucht wird ab dem zweiten Listeneintrag.
Wiederhole die beiden folgenden Schritte, bis Du am Ende der Liste bist:
- Suche "oben", bis die Liste zu Ende ist oder ein Eintrag gefunden wird, dessen "oben" Wert größer als der "oben" Vergleichswert ist. Dies ist ein "oben" Treffer, sein "unten" Wert wird zum neuen "unten" Vergleichswert und die Suche geht auf dem Folgeeintrag der Liste weiter.
- Suche "unten", bis die Liste zu Ende ist oder ein Eintrag gefunden wird, dessen "unten" Wert kleiner als der "unten" Vergleichswert ist. Der "oben" Wert dieses Eintrags wird zum neuen "oben" Vergleichswert und die Suche geht auf dem Folgeeintrag der Liste weiter.*
Wäre dieses Vorgehen das, was Du Dir vorstellst? Wenn ja, könnte man über Code sprechen. Die Frage, wie Treffer gespeichert oder markiert werden, wäre dann als nächstes zu behandeln.
Rolf
sumpsi - posui - clusi