AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array durchsuchen

Ein Thema von Muellermilchtrinker · begonnen am 12. Sep 2010 · letzter Beitrag vom 13. Sep 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#1

Array durchsuchen

  Alt 12. Sep 2010, 16:47
Delphi-Version: 2009
Hallo DP,

stehe mal wieder vor einem Problem. Ich hab ein array: azs: array['a','b','c',...,'z'] of string . Wenn ich jetzt wissen will, an welcher Stelle das h steht, dann muss ich das Array durchsuchen.
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.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Array durchsuchen

  Alt 12. Sep 2010, 16:55
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
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Array durchsuchen

  Alt 12. Sep 2010, 16:55
Ich vermute, dass jede Lösung zum Durchsuchen eines einfachen Arrays intern mit einer Schleife arbeiten wird.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#4

AW: Array durchsuchen

  Alt 12. Sep 2010, 17:08
Sind die Elemente im Array sortiert?
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Array durchsuchen

  Alt 12. Sep 2010, 17:12
Sind nicht sortiert. Ich werd es einfach mal ausprobieren.
BTW: Wie messt ihr da eigentlich immer die Zeit???
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Array durchsuchen

  Alt 12. Sep 2010, 17:18
Zum messen eine StopUhr (kein Scherz!... siehe Suche: TStopUhr )

Unsortiert dann wohl wie vorgeschlagen nur ein Baum, SkipList/HaschList etc.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Array durchsuchen

  Alt 12. Sep 2010, 17:19
Ein Baum ohne Sortierung bringt nichts.
Und bei einer Hasch-Liste ist es einem vielleicht egal
Markus Kinzler
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#8

AW: Array durchsuchen

  Alt 12. Sep 2010, 17:23
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: Array durchsuchen

  Alt 12. Sep 2010, 17:29
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#10

AW: Array durchsuchen

  Alt 12. Sep 2010, 17:33
BTW: Wie messt ihr da eigentlich immer die Zeit???
Ich i.d.R. so:
Delphi-Quellcode:
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');
Die Test-Funktionen rufe ich immer mehrfach auf, um reproduzierbare Ergebnisse zu erhalten, auch bei sehr kurzen Durchlaufzeiten.

Geändert von Matze (12. Sep 2010 um 17:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz