Dann musst du das Array vorher sortieren.
Und das Sortieren geht dank Generics in D2010+ auch recht einfach:
Delphi-Quellcode:
TArray.Sort<vector>(V, TDelegatedComparer<vector>.Create(
function(const Left, Right: vector): Integer
begin
result := CompareValue(Left.sx, Right.sx);
if result = EqualsValue then
result := CompareValue(Left.sy, Right.sy);
end));
Dummerweise ist die Sortierung immer nur auf eine Suchanfrage beschränkt (hier sy,sy). Wenn man nach ex,ey suchen möchte, muss eine andere Sortierung vorliegen. Als Lösung aus diesem Dilemma bietet sich eine Indizierung des Vector-Arrays an. Man macht dann einen Index für sx,sy und einen für ex,ey. Sinnvollerweise baut man da gleich die entsprechenden Klassen, die das Ganze kapseln (die globalen Variablen waren hoffentlich nur als Beispiel gedacht!).
Du bekommst allerdings Probleme, wenn sich die Daten in den Vektoren (oder das Vector-Array selbst) ständig ändern. Dann müsste die Sortierung jedesmal mitgeführt werden. Ohne eine umfassendere Beschreibung des eigentlichen Problems ist da eine belastbare Antwort schwierig.