Wenn Sie zwei weitgehend identische Dateien mit mehreren tausend Datensätzen haben, wie schreiben Sie Code, um Unterschiede zwischen ihnen zu finden. Angenommen, Unix / Linux-Befehle dürfen nicht verwendet werden.
Meine Idee:
Da die meisten Einträge gleich sind, können wir die Einträge der zwei Dateien sortieren und dann jeden Eintrag einzeln vergleichen, z. Eintrag i in Datei1 Vergleich mit Eintrag i in Datei2. Es ist O (n lg n), n ist die Größe der Datei.
Gibt es eine O (n) Lösung?
Hashtabellen sind deine Freunde.
1
. Jetzt wissen Sie, welcher Datensatz in beiden Dateien existiert (Wert 3), welcher nur in der ersten Datei existiert (Wert 1) und welcher nur in der zweiten Datei existiert (Wert 2). Und in linearer Zeit.
Hinweis: Wenn Sie eine eigene Hash-Tabelle implementieren, müssen Sie bei Bedarf die Größe Ihrer Tabelle und Kollisionen erhöhen. Ich bin sicher, wenn Sie das tun könnten, dann würden Sie mit dieser Frage keine harte Zeit haben, also benutzen Sie eine Bibliothek.
Tags und Links algorithm c c++ comparison data-structures