AGB  ·  Datenschutz  ·  Impressum  







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

Such-Algorithmus gesucht

Ein Thema von hoika · begonnen am 21. Aug 2006 · letzter Beitrag vom 22. Aug 2006
Antwort Antwort
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

Such-Algorithmus gesucht

  Alt 21. Aug 2006, 18:20
Hallo,

ich stehe hier gerade auf dem Schlauch (wie immer ).
Folgende Daten sind gegeben

Startwert (Datum)
Id (Integer)

etwa so

1.5.2005 35
2.8.2005 32

Die Werte stehen als Klasse in einer List (TList).
Ich suche jetzt nach einem Algorithmus, der mir bei gegebenem Datum die Id ermittelt
also

1.4.2005 -> Fehler
1.5.2005 -> 35
2.5.2005 -> 35
1.8.2005 -> 35
2.8.2005 -> 32
3.8.2005 -> 32 usw.


Kann man das auch über Quicksort machen ?
Ein Expand (also aufrollen der Liste wie 1.5.2005 35, 2.5.2005 35 geht nicht).


Zur Zeit behelfe ich mich mit einer sortierten Liste (nach Startdatum aufwärts)
und Rückwärtssuche, bis ein Eintrag mit Startdatum<=Testdatum gefunden wurde.


Wie sucht man nach solchen Einträgen ?

Danke schon mal im voraus


Heiko
Heiko
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Such-Algorithmus gesucht

  Alt 21. Aug 2006, 18:54
Zitat von hoika:
Kann man das auch über Quicksort machen ?

Zur Zeit behelfe ich mich mit einer sortierten Liste (nach Startdatum aufwärts)
und Rückwärtssuche, bis ein Eintrag mit Startdatum<=Testdatum gefunden wurde.

Wie sucht man nach solchen Einträgen ?
HI,
ich glaube da ist ein wenig was durcheinander gekommen, was möchtest du denn mit Quicksort machen? Suchen <> Sortieren, Quicksort = Sortieren
Sortieren kannst du auf jeden Fall per Quicksort, da stellt TList dir eine einfache Möglichkeit zur Verfügung, die eigentlich nur einen Quicksort implementiert. Du musst allerdings sagen, wie verglichen wird (schließlich speicherst du nur Zeiger). Was du machen musst ist einfach eine Methode vom Typ TSortCompare implementieren und an List.Sort übergeben.

Delphi-Quellcode:
TDeinElement = record
  date : TDate;
  value : Integer;
end;

function compare(Item1, Item2: Pointer): Integer;
begin
  if TDeinElement(Item1).date < TDeinElement(Item1).date then
  begin
    result := 1;
  end

  else if TDeinElement(Item1).date = TDeinElement(Item1).date then
  begin
    result := 0;
  end

  else
  begin
    result = -1;
  end;
end;
Na ja, wenn du jetzt ein Element suchst, dann kannst du einfach deine Liste sortieren (die Funktion sort aufrufen und als Argument die Methode compare übergeben). Dann hast du schon mal eine sortierte Liste.
Um jetzt ein Element zu finden kannst du einfach binär suchen. Du nimmst das Element in der Mitte und schaust ob es deinem Datum entspricht oder kleiner bzw. größer ist.
Hast du das Datum gefunden bist du fertig. Ansonsten suchst du rekursiv in dem halben Feld weiter. Irgendwann gibt es nur die Möglichkeit, dass nur noch ein Datum übrig bleibt.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#3

Re: Such-Algorithmus gesucht

  Alt 21. Aug 2006, 19:05
Verschiedene Sortier-, aber auch Suchalgorithmen gibts hier: www.sortieralgorithmen.de

mfg

Christian

P.S.: BTW: Wenn du sowieso ne Klasse hast, kannst auch ne TObjectList(+ Template) nehmen...
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Such-Algorithmus gesucht

  Alt 21. Aug 2006, 19:43
Hallo,

ich meinte Qucksearch.
Die Frage zielte darauf, ob das auch bei dieser Suche geht.

QuickSearch benutze ich schon zur genauen Suche.


Heiko
Heiko
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: Such-Algorithmus gesucht

  Alt 21. Aug 2006, 21:39
Zitat von hoika:
ich meinte Qucksearch.
Die Frage zielte darauf, ob das auch bei dieser Suche geht.
Wieso nicht? Für QuickSort bzw. -Search is es nur wichtig, dass es eine eindeutige Reihenfolge gibt...

Zitat:
QuickSearch benutze ich schon zur genauen Suche.
Welche genaue Suche...?

BTW: QuickSearch is auch auf der von mir verlinkten Seite...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Such-Algorithmus gesucht

  Alt 22. Aug 2006, 08:16
Hallo,

hm, es klingt einleuchtend.
Mal am Wochenende probieren.


Danke

Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:38 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