hey
ich habe mal folgende frage, ev kann das jemand beantworten bevor ich mich zu ode suche 😁
Ich benutze einmal Getdirectories und GetFiles um auf einer Platte die Dateien und verzeichnisse einzulesen und sie dann auszugeben.
Auf meiner NTFS Platte geht das auch super und er gibt Vezeichnisse und Dateien in alphabetischer Reihenfolge aus, aber auf meiner FAT32 Platte macht er dies nicht da ist alles bunt durcheinander gewürfelt.
Liegt das an der Fat Formatierung oder ist das jetzt nur ein dummer Zufall?
also ich weiss einfach nicht woran es liegt.
Mfg
IamTheBug
hm scheint wohl am FAT zu liegen...
denn beim USB stick der FAT ist ist es genau so...
hm muss ich wohl von hand eine sortierung vornehmen...
Mfg
IamTheBug
USB Stick mit NTFS formatieren 😉
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011
Hallo IamTheBug,
in FAT32 sind die Verzeichniseinträge in der Tat nicht sortiert => Array.Sort.
herbivore
aha das probiere ich mal danke
ansonsten hätte ich mir selber nen sortieralgo geschrieben...
bin da ja nicht ganz unbewandert auf dem gebiet 😉
aber so ist wohl bequemer
muss ich nur noch die effeziens ermitteln 😁
Mfg
IamTheBug
Hallo IamTheBug,
Array.Sort benutzt den Quicksort-Algorithmus. Der Aufwand ist im Schnitt n*log n. Besser geht es nicht.
herbivore
ach es geht damit super
danke nochmal
man wenn ich doch nur gleich immer über alle zu Verfügung gestellten Befehle bescheid wüsste.
Danke
Mfg
IamTheBug
hm ja Qiucksort. Schade hätten die doch ruhig nen Cleverquicksort draus machen können. Wäre zwar im mittel im noch n log n aber dafür wäre durch die andere Wahl des Pivoelements die Laufzeit im schlechtesten Fall leicht gesunken 😉
edit: sorry das musste ich jetzt nachschieben 😁
Mfg
IamTheBug
Hallo IamTheBug,
hups, ich hatte irgendwie "unbewandert" statt "nicht unbewandert" gelesen. Sonst hätte ich mir den Hinweis auf die Aufwandsklasse natürlich sparen können.
Aber wo wir gerade dabei sind. Mit fehlt nicht so sehr der Cleversort, der vielleicht noch ein bisschen mehr Performance rausholtm, sondern ein stabiler Sortieralgorithmus. Das wäre insbesondere für das Sortieren von ListViews (durch Anklicken der Spalten in der umgekehrten Reihenfolge entsprechend der Priorität der Sortierkriterien) sehr praktisch.
herbivore
hm und was wäre eventuell mit einem bucketsort algorithmus? Wenn er eben nicht schon unterstützt wird muss man eben selber ein paar zeilen schreiben 😉
Ich denke das macht sich für das Sortieren von Elementen in einem Listview nicht schlecht. (z.b. wenn dort Dateinamen aufgelistet sind und diese sortiert werden sollen?)
Mfg
IamTheBug
Hallo IamTheBug,
ja, implementieren kann man viel. Mich stört, dass es kein vorgegebenes Array.Sort (..., bool stable) oder Array.SortStable (...) gibt.
herbivore
Das Thema ist zwar schon sehr alt, aber genau darum geht es bei meiner Frage.
Ich möchte ein kleines Programm für mich programmieren um den Inhalt einer Fat32 Speicherkarte nach meinem Wunsch zu sortieren.
Die Dateien werden unter Windows zwar sortiert angezeigt, aber in Geräten mit embedet Systemen sind die Dateien durcheinander. Ich nehme an, dass es die Reihenfolge wie die Daten auf das Dateisystem geschrieben wurden.
Gibt es eine einfache Möglichkeit die Reihenfolge unter C# zu beeinflussen?
Hallo el_vital,
Ich nehme an, dass es die Reihenfolge wie die Daten auf das Dateisystem geschrieben wurden.
solange zwischendurch keine Einträge gelöscht werden, trifft das zu.
Gibt es eine einfache Möglichkeit die Reihenfolge unter C# zu beeinflussen?
Dadurch, dass du die Einträge gleich in der gewünschten Reihenfolge schreibst. Nachträglich dürfte das nicht so einfach sein.
Oder du sortierst die Einträge eben beim bzw. nach dem Auslesen, wie oben beschrieben.
herbivore
Hallo el_vital,
mit Low-Level-Funktionen (Win32) oder gar mit direkten Zugriff auf die Sektoren bzw. die FAT32-Strukturen auf der Platte kannst du natürlich alles tun. Meine Aussage bezog sich auf die .NET Ebene.
herbivore