Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Überprüfen, ob Zahl in unregelmäßigen Bereichen (https://www.delphipraxis.net/76437-ueberpruefen-ob-zahl-unregelmaessigen-bereichen.html)

bigg 4. Sep 2006 17:37

Re: Überprüfen, ob Zahl in unregelmäßigen Bereichen
 
huch, :shock:

ich glaube ich habe dein Problem nun verstanden. Wobei sich dann eine Liste mit Zeigern verknüpft mit einer Liste mit Integern besser machen würde, imho. Die Liste wird anschließend sortiert und auf Konsistenz geprüft.

xZise 4. Sep 2006 17:42

Re: Überprüfen, ob Zahl in unregelmäßigen Bereichen
 
Zitat:

Zitat von bigg
Wobei sich dann eine Liste mit Zeigern verknüpft mit einer Liste mit Integern besser machen würde, imho. Die Liste wird anschließend sortiert und auf Konsistenz geprüft.

:D Ähn ja... Ich versteh fast nix :D

negaH 5. Sep 2006 12:30

Re: Überprüfen, ob Zahl in unregelmäßigen Bereichen
 
Ist auch nicht so wichtig da es besseres gibt.

1. Frage: welche Zahlen kommen vor und wie viele Bereiche gibt es ? Ich frage weil wenn das Set der Zahlen klein ist, zb. eben 1 bis 9 dann ist mein Vorschlag der effizienteste. Es ist eine einfach und direkte Lookup Tabelle und hat Komplexität O(1) !!

2. falls der Zahlenbereich zu groß ist so wird auch die Lockup Tabelle enorm groß und unpraktikabel. In diesem Moment benutzt du einen sortierten binären Baum deiner Bereiche. Bei der Suche in welchem Bereich deine Zahl nun liegt gehst du defakto per binärer Suche vor. Alle bisherigen Vorschläge gehen iterativ und sequientiell durch deine Bereichsliste durch. Dies ist bei vielen Bereichen wesentlich ineffizienter als eine binäre Suche, sei es als Binärer Baum (Trie) oder eine sortierte Liste die per binärer Suche durchsucht wird.

Gruß Hagen

xZise 5. Sep 2006 14:49

Re: Überprüfen, ob Zahl in unregelmäßigen Bereichen
 
Also die Zahl kann so groß wie ein Int sein und die Berieche zwischen 1 und 10.

negaH 5. Sep 2006 14:59

Re: Überprüfen, ob Zahl in unregelmäßigen Bereichen
 
bei max. 10 Bereichen lohnt keine aufwendige binäre Suche/Baum.

Delphi-Quellcode:
var
  Bereich: array[0..10] of Integer = (10,100,1000,234567,87654321, MaxInt, 0, 0, 0); // MaxInt als End-Marker
begin
  BereichIndex := Low(Bereich);
  while Zahl > Bereich[BereichIndex] do
    Inc(BereichIndex);
end;
Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 Uhr.
Seite 2 von 2     12   

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