![]() |
Delphi-Version: 2009
Array durchsuchen
Hallo DP,
stehe mal wieder vor einem Problem. Ich hab ein array:
Delphi-Quellcode:
. Wenn ich jetzt wissen will, an welcher Stelle das h steht, dann muss ich das Array durchsuchen.
azs: array['a','b','c',...,'z'] of string
Nur wie mache ich das. Habe mir gedacht, dass ich eine Funktion schreibe, die von Anfang bis Ende bzw. bis zum Fundort das Array durchgeht und dann schaut, ob der Inhalt das entsprechende Suchwort ist. Aber ich denke, dass das nicht sehr effizient ist und unter Umständen sehr lange dauern kann, wenn mein Suchwort sehr weit hinten steht, da das Array noch ein bisschen größer sein wird. Hab schon in der Delphi-Reference gesucht, aber kein entsprechenden Eintrag gefunden. Vielleicht gibt es ja schon eine fertige optimierte Lösung. Danke schonmal. |
AW: Array durchsuchen
Ist der einfachste Weg. Schneller wäre es nur, wenn du andere Konstrukte, wie z.B. eine Baumstruktur verwenden würdest, oder ein Index mit entsprechender Struktur
|
AW: Array durchsuchen
Ich vermute, dass jede Lösung zum Durchsuchen eines einfachen Arrays intern mit einer Schleife arbeiten wird.
|
AW: Array durchsuchen
Sind die Elemente im Array sortiert?
|
AW: Array durchsuchen
Sind nicht sortiert. Ich werd es einfach mal ausprobieren.
BTW: Wie messt ihr da eigentlich immer die Zeit??? |
AW: Array durchsuchen
Zum messen eine StopUhr ;-) (kein Scherz!... siehe Suche: TStopUhr )
Unsortiert dann wohl wie vorgeschlagen nur ein Baum, SkipList/HaschList etc. |
AW: Array durchsuchen
Ein Baum ohne Sortierung bringt nichts.
Und bei einer Hasch-Liste ist es einem vielleicht egal :wink: |
AW: Array durchsuchen
Ich dachte mehr, die Liste gleich beim erzeugen so zu generieren. Wenn die Liste wie beschrieben nur ein Array bleiben muss, dann halt wirlich nur der Schleifendurchlauf.
Aber denke doch, dass das eigener Quellcode ist und wenn es zu lange dauert müsste man halt die Art der Liste anpassen. |
AW: Array durchsuchen
Wer sagt denn daß der Baum nicht sortiert wäre?
Wenn die Hashliste nicht reicht, dann wäre ein Baum schon möglich. Bei der Hashliste muß zwar immernoch das "ganze" Array durchlaufen werden, aber dafür müssen nur noch Integer und nicht rießige Strings verglichen werden. Für den Baum muß, wenn das Array nicht sortiert ist, doch einfach nur ein zusätzlicher Index angelegt werden, in Form des Baums. Wobei man auch bei der HashListe parallel die Hashs in einer sortierten Hash+Index-Liste halten kann. |
AW: Array durchsuchen
Zitat:
Delphi-Quellcode:
Die Test-Funktionen rufe ich immer mehrfach auf, um reproduzierbare Ergebnisse zu erhalten, auch bei sehr kurzen Durchlaufzeiten.
var
i: Integer; Start, Stop: Integer; begin Start := GetTickCount; for i := 1 to 1000 do begin // dein Funktionsaufruf end; Stop := GetTickCount; ShowMessage(FloatToStr((Stop - Start) / 1000) + ' ms'); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz