Hallo,
ich habe ein Problem mit der Laufzeit meines Programms.
Und zwar habe ich ein Programm welches 6 stellige Nummern mit dazugehörigen Preis einliest. Das können bis zu eine Million Nummern sein. Nun soll das einlesen allerdings so sein, dass wenn die Nummer schon vorhanden ist nur der Preis aktualisiert wird.
Ich habe das ganze im Moment mit einem 2 dimensionalen Array gelöst. Und zwar Feld[][] wobei die erste dimension einfach die Anzahl der Nummern sind und in der 2. Dimension bei 0 die eigentliche Nummer gespeichert ist und bei 1 dann der dazugehörige Preis.
Mein Problem ist nun, dass ich bevor ich eine weitere Nummer zu dem Array hinzufüge erst das bisherige Array komplett durchlaufen muss um zu prüfen ob die Nummer schon vorkommt.
Bei 300000 gespeicherten Nummern denen weitere 10 hinzugefügt werden sollen wären das dann 10*300000 durchläufe in etwa was einfach viel zu lange dauert.
Ich habe es auch schon versucht mit sortieren der Elemente um dann schneller nach doppelten suchen zu können, aber das sortieren von so vielen Elementen dauert dann auch schon sehr lange so dass ich da eher einen negativen Effekt empfunden habe.
Hätte jemand eventuell eine Lösung für dieses Problem? Eventuell eine andere Form des Array..wobei ich da nun schon einige Varianten ausprobiert habe. Das Programm muss ja nicht innerhalb einer Sekunde eine so große Elementzahl handhaben können, aber im Moment braucht mein Programm locker eine halbe Stunde für die Aufgabe.
Danke schonmal im Vorraus
ich habe ein Problem mit der Laufzeit meines Programms.
Und zwar habe ich ein Programm welches 6 stellige Nummern mit dazugehörigen Preis einliest. Das können bis zu eine Million Nummern sein. Nun soll das einlesen allerdings so sein, dass wenn die Nummer schon vorhanden ist nur der Preis aktualisiert wird.
Ich habe das ganze im Moment mit einem 2 dimensionalen Array gelöst. Und zwar Feld[][] wobei die erste dimension einfach die Anzahl der Nummern sind und in der 2. Dimension bei 0 die eigentliche Nummer gespeichert ist und bei 1 dann der dazugehörige Preis.
Mein Problem ist nun, dass ich bevor ich eine weitere Nummer zu dem Array hinzufüge erst das bisherige Array komplett durchlaufen muss um zu prüfen ob die Nummer schon vorkommt.
Bei 300000 gespeicherten Nummern denen weitere 10 hinzugefügt werden sollen wären das dann 10*300000 durchläufe in etwa was einfach viel zu lange dauert.
Ich habe es auch schon versucht mit sortieren der Elemente um dann schneller nach doppelten suchen zu können, aber das sortieren von so vielen Elementen dauert dann auch schon sehr lange so dass ich da eher einen negativen Effekt empfunden habe.
Hätte jemand eventuell eine Lösung für dieses Problem? Eventuell eine andere Form des Array..wobei ich da nun schon einige Varianten ausprobiert habe. Das Programm muss ja nicht innerhalb einer Sekunde eine so große Elementzahl handhaben können, aber im Moment braucht mein Programm locker eine halbe Stunde für die Aufgabe.
Danke schonmal im Vorraus