![]() |
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. |
Re: Überprüfen, ob Zahl in unregelmäßigen Bereichen
Zitat:
|
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 |
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.
|
Re: Überprüfen, ob Zahl in unregelmäßigen Bereichen
bei max. 10 Bereichen lohnt keine aufwendige binäre Suche/Baum.
Delphi-Quellcode:
Gruß Hagen
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:54 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