Windows Confidential: Die Evolution der Sortierung

Die Entwicklung von Sortieralgorithmen in Windows Explorer hat eine lange und etwas komplizierte Geschichte.

Raymond Chen

Windows Explorer begann mit einer sehr einfachen Sortier-Algorithmus. Gerade wird entsprechend der Funktion "Lstrcmpi" Dateinamen sortiert. Dieser Vorgang einen Gebietsschema-spezifische, Groß-und Kleinschreibung Vergleich durchgeführt. Bedenken Sie, wurde auch dieser Vergleichsfunktion zur Zeit ziemlich kompliziert. Beispielsweise gab es besondere Behandlung Bindestriche und Apostrophe.

Wenn Windows 95-Dateinamen für die Anzeige in Windows Explorer sortiert, würden sie als Folge file139 vor der file20 abgelegt. Dies ist durchaus logisch aus Sicht des Programmierers Computer. Es ist auch völlig kontraproduktiv, normale Menschen – also beweisen, dass Programmierer nicht normale Menschen sind.

In Windows XP aktualisiert Microsoft Windows Explorer-sortieren-Algorithmus zu mehr im Einklang mit den Erwartungen der Menschen. Zahlen behandelt als Zahlen anstelle von Sequenzen von Zeichen in Dateinamen. Während dies Sortierung für die meisten Menschen verbesserte, gab es Fälle, in denen diese Änderung einige Überraschungen geführt haben.

Ein Beispiel, die häufig auftreten war Dateinamen mit hex-Werte. Unter der neuen Anzahl basierend sortieren vorausgesetzt Windows Explorer eine Datei namens "1040A" sollte etwas nach "1040" Sortieren und nirgendwo bei eine Datei mit dem Namen "103F2". Wenn aus irgendeinem Grund Sie die Gewohnheit von Dateien haben, deren Namen Hexadezimalwerte sind, vollständige Ordner anzeigen, können Sie die Richtlinie festlegen "Deaktivieren Sie numerische Sortierung im Windows-Explorer". Diese Richtlinie ändert die Sortierung zurück, wie es in Versionen von Windows vor Windows XP war – nämlich Zeichen für Zeichen.

Punkte und Leerzeichen

In Windows Vista wurde eine winzige Optimieren der Vergleichsalgorithmus gemacht, da Perioden Doppelschicht dienen. Sie sind traditionelle Zeichen Tag, aber sie dienen auch als Datei Erweiterung Markierungen bei Nacht. Eine Datei namens Datei 1.txt landete folglich wird nach File.txt kontraintuitiv sortiert, da die Periode mit den Raum und verlieren verglichen wird, wurde.

Microsoft hinzugefügt Sortier-Algorithmus in Windows Vista eine neue Regel, so dass als Sortierung vor dem Leerzeichen anstelle von nach diesen gleichgestellten Zeiten. Wenn Sie dieses untergeordnete Regel nicht gefällt, können Sie es durch Festlegen von NoDotBreakInLogicalCompare, aber nur in Windows Vista deaktivieren. Die Einstellung hat keine Auswirkung auf Windows 7.

Es gibt eine andere, weniger seltsame Fall in dem Zeichen für Zeichen sortieren möglicherweise vorzuziehen: Wenn Sie mit Gleitkommazahlen in deren Dateinamen haben. Anzahl-basierte Sortier-Algorithmus würde voraus 1.25"." "1,5" setzen. Dies ist korrekt, wenn "1,5" und "1,25" auf eine nummerierte Hierarchie, z. B. einen rechtlichen Codeabschnitt verweisen. Titel 1, Kapitel 5 würde vor dem Titel 1, Kapitel 25 kommen.

Andererseits, wenn die Dimensionen in Zentimetern Teil einer Maschine "1,5" und "1,25" verweisen, dann würden Sie erwarten "1,25" vor "1.5". Da Windows Explorer nicht genügend Kontext zu wissen, ob eine bestimmte Zeichenfolge der Ziffern nach dem Dezimalkomma eine hierarchische Zahl oder eine Gleitkommazahl ist Datenpunktnummer, es braucht deine Hilfe.

Eine subtilere Sortieralgorithmen Änderung wurde in Windows 7 eingeführt. Ein Kunde beobachtet, dass hätte er zwei Dateien mit etwas wie file1.txt und Datei2.txt, die Dateien in dieser Reihenfolge angezeigt, wenn er den Ordner nach Typ sortiert die erwartete Verhalten ist.

Wenn er den Type-Header geklickt haben würde weiterhin ein zweites Mal zum Umkehren der Sortierreihenfolge, frühere Versionen von Windows vor der Datei2.txt file1.txt platzieren. Die Datei jedoch switches stellen in Windows 7, kommen vor der Datei1.txt Datei2.txt. Der Kunde wurde durch diese Änderung im Verhalten verwechselt, da sah es "unvernünftig".

Die Spalte Typ versteht, dass es ist üblich, dass viele Elemente desselben Typs haben, so dass es bedeutet, dass Bindungen durch den Namen des Elements unterteilt werden sollte. Zusätzlich zu sortieren nach Typ etwas konsistenter, bedeutet dies, dass wenn Sie die Sortierreihenfolge umzukehren, die Elemente innerhalb jeder Produktart auch Reihenfolge umkehren. Dies ist die angemessene Verhalten für viele Benutzer, da sie erwarten, dass eine Spalte umschalten den Satz der Elemente umkehren wird.

Also Bedenken Sie das nächste Mal, wenn, das Sie eine Sortierung ausführen,, dass beim Sortieren der klingt einfach und unkompliziert, hinter den Kulissen passiert eine Menge.

Raymond Chen’s

Raymond Chen*'s* Web-Site, die alte neue Sache, und seinem gleichnamiges Buch (Addison-Wesley, 2007) mit Geschichte von Windows, Win32-Programmierung und giant Metall Hühner.

Verwandter Inhalt