erledigt! wie Doubletten im Dateisystem finden?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Macros
Beiträge: 1364
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Re: erledigt! wie Doubletten im Dateisystem finden?

Beitrag von Macros »

Jep ein wirklich schönes Topic aus der simplen Frage :)

Die Sort Befehle von Purebasic verwenden übrigens Mergesort (Listen) und Quicksort (Arrays). Beide Algorithmen laufen in O(n*log(n)).

Sprich, wenn wir beim Beispiel 10.000 Elemente bleiben sind das ca in 9,2*10.000 also etwa 100.000 Operationen. Da sie dazu noch wesentlich maschinennäher arbeiten dürften sie bei der Zahl sogar noch mit der Linearen Lösung, die Jogo schön aufgegriffen hat, konkurrieren. Erst bei einer Abstrus hohen Anzahl an Elementen wird man dann einen Unterschied merken. Also durchaus auch eine schnelle effiziente Lösung.

Deine Lösung EmmJott sollte so also funktionieren. Ebenso kannst du auf die Weise Jogos Lösung mit zwei Durchläufen verwenden, was noch etwas flotter sein sollte.

Meine Lösung auch nochmal in Stichpunkten (und mit Optimierung zu Sha256 aus dem Thema):
  • NewMap Counter()
  • Verzeichnisse einlesen,
    • SHA256-Fingerprint erstellen
    • Feld "doublette" = false
    • Mapeintrag Counter($fingerprint)+1
  • Einmal über die Liste gehen und jeweils Feld "doublette" = true, wenn Counter($fingerprint)>1
Den Programmierspaß will ich dir nicht nehmen, darum keine fertige Lösung ;)

Übrigens meinte ich tatsächlich jdupes. Das ist eine Weiterentwicklung von dupes und nochmal viel mächtiger und flotter.
Bild
Antworten