C#-Sortierung: Sortieren vs. Sortieren nach
In C# haben wir mehrere Optionen zum Sortieren von Sammlungen, einschließlich Sortieren und Sortieren nach. Dieser Artikel befasst sich mit den Unterschieden zwischen diesen beiden Methoden und ihren jeweiligen Algorithmen.
Sortieren
Die Sortiermethode führt eine direkte Sortierung mithilfe des QuickSort-Algorithmus durch. Es handelt sich um einen instabilen Sortieralgorithmus, was bedeutet, dass die Reihenfolge gleicher Elemente nach dem Sortieren möglicherweise nicht erhalten bleibt.
OrderBy
Die OrderBy-Methode führt dagegen eine aus stabile Sorte. Dies bedeutet, dass gleiche Elemente nach dem Sortieren ihre relative Reihenfolge beibehalten. OrderBy verwendet intern einen Merge-Sortieralgorithmus.
Leistungsvergleich
Die Leistung von Sort und OrderBy variiert abhängig von Faktoren wie der Größe der Sammlung und der Art der Elemente , und die Sortierkriterien. Im Allgemeinen ist Sortieren bei kleinen Sammlungen oder beim Sortieren nach primitiven Datentypen schneller. Bei größeren Sammlungen oder komplexen Sortierkriterien kann OrderBy jedoch aufgrund seines stabilen Sortieralgorithmus effizienter sein.
Verwendungsszenarien
Sort eignet sich, wenn Sie Leistung benötigen eine direkte Sortierung und muss nicht die Reihenfolge gleicher Elemente beibehalten. OrderBy ist vorzuziehen, wenn die Beibehaltung der Reihenfolge gleicher Elemente wichtig ist oder wenn Sie nach dem Sortieren zusätzliche Vorgänge (z. B. Filterung oder Projektion) ausführen müssen.
Beispiel
Bedenken Sie Das folgende Beispiel:
List<Person> persons = new List<Person>(); persons.Add(new Person("P005", "Janson")); persons.Add(new Person("P002", "Aravind")); persons.Add(new Person("P007", "Kazhal"));
Mit Sortieren können wir die Liste sortieren Name:
persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));
Mit OrderBy können wir eine stabile Sortierung mit einem benutzerdefinierten Vergleicher durchführen:
var query = persons.OrderBy(n => n.Name, new NameComparer()); class NameComparer : IComparer<string> { public int Compare(string x, string y) { return string.Compare(x, y, true); } }
In diesem Beispiel ist OrderBy besser geeignet, da es sicherstellt, dass die Reihenfolge gleich ist Namen bleiben erhalten.
Das obige ist der detaillierte Inhalt vonC#-Sortierung: Sortieren vs. Sortieren nach: Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!