Algorithmus zum Suchen in Datei
-
wollte fragen ob irgendwer von euch eine guten algorithmus zum suchen in einer datei besitzt.
ich muss aus einer normalen txt datei einen bestimmten wert(e) heraussuchen. die datei ist aber ziemlich lang
1 2 3 4 5 6 7 8
9 10 11 12 13 14 15die datei ist ca so strukturiert
ich muss jetzt z.b. 12 heraussuchen!
thx
-
Wieso liest du nicht alles in ein Array, map oder list ein??
Dann kannst du da drin suchen. Ist sehr viel perfomanter.
-
Spontan würde mir der algorithmus einfallen, den auch access benutzt mit dem index um schneller daten zu finden... ist eigentlich ganz simpel. Du hast z.B. 100 zahlen (1-100)die nach der größe sortiert werden und suchst die Zahl 85 dann fängst du damit an, dass du in die mitte dieser zahlen springst(sprich 50). da 50 kleiner 85 ist, springs du somit wieder in die mitte von 50-100, also 75, und diese springereien gehen solange bis die zahl gefunden würde. geht schneller als wen man von 1-85 suchen würde
Hoffe ich konnte helfen.
-
hydro schrieb:
die datei ist aber ziemlich lang
Stalin schrieb:
Wieso liest du nicht alles in ein Array, map oder list ein??
Dann kannst du da drin suchen. Ist sehr viel perfomanter.Jetzt kommt es natürlich darauf an, wie groß die Datei ist. Wenn sie zu groß ist, sollte man sie in "Häppchen" laden und durchsuchen.
Wenn die Datei so Sortiert ist, wie du es darstellst, dann erscheint mir der Algorithmus, den hydro vorschlägt recht brauchbar zu sein. Ansonsten würde ich die einzelnen Elemente in eine Map einlesen und das Sortieren und suchen übernimmt dan die Map.Gruß Steffen
-
rho[1] rho[2] rho[3] h[0] h[1] h[2] freq[0] freq[1] freq[2] freq[3]
20.000 50.000 20.000 45.000 0.500 5.000 360.0 3160.0 7260.0 27800.0
20.000 50.000 40.000 45.000 0.500 5.000 360.0 3160.0 7260.0 27800.0
20.000 100.000 20.000 45.000 0.500 5.000 360.0 3160.0 7260.0 27800.0
......
....
..
.
also das is die ungefähre struktur in der datei! (.txt)
wenn der benutzer sagt bei rho[1] 20.000 und bei h[0] 45.000 will er rho[2] darstellen dann muss ich alle werte von rho[2] heraussuchen wo rho[1] 20.000 und h[0] 45.000 ist.
dann wird rho[2] über rho[1] (y.achse] und h[0] (x-achse) grafisch dargestellt.wie kann ich jetzt die werte herausbekommen?