Hallo Carsten,
ich habe meinen Vorschlag (Beitrag #10) einmal mit zufälligen Daten getestet (E6600-CPU, 2 GByte
RAM):
Code:
25000 Zeilen: Laufzeit < 0.2 sec
50000 Zeilen: Laufzeit < 0.4 sec
100000 Zeilen: Laufzeit < 0.8 sec
Die Anwendung der Klasse
TSparseMatrix ist denkbar einfach:
Delphi-Quellcode:
var
M : TSparseMatrix;
begin
M := TSparseMatrix.Create;
try
// Originaldatei laden
M.LoadFromFile ('gps-original.txt');
// Ergebnis speichern
M.SaveToFile ('gps-optimized.txt');
finally
M.Free;
end;
end;
Im Anhang findest du eine neue Version, die zwei Fehler korrigiert. Zum einen fehlte eine Initialisierung der Matrixelemente, wodurch negativen RXL-Werte falsch behandelt wurden. Zum anderen erforderte die fehlerhafte Implementierung der Val()-Routine in Delphi eine Nachbehandlung beim Zerlegen der Datenzeilen. Beim Testen konnte ich - abgesehen von der Sortierung - keine Unterschiede in den Ergebnissen beider Verfahren feststellen.
Wenn du Fragen zum Algorithmus hast, kannst du sie gerne hier stellen.
Gruß Hawkeye