Maison > développement back-end > C++ > Tri C# : Trier ou OrderBy : Quand dois-je utiliser lequel ?

Tri C# : Trier ou OrderBy : Quand dois-je utiliser lequel ?

Barbara Streisand
Libérer: 2024-12-30 02:05:09
original
985 Les gens l'ont consulté

C# Sorting: Sort vs. OrderBy: When Should I Use Which?

Tri C# : trier par rapport à OrderBy

En C#, nous disposons de plusieurs options pour trier les collections, notamment Sort et OrderBy. Cet article approfondira les différences entre ces deux méthodes et leurs algorithmes respectifs.

Tri

La méthode Sort effectue un tri sur place à l'aide de l'algorithme QuickSort. Il s'agit d'un algorithme de tri instable, ce qui signifie que l'ordre des éléments égaux peut ne pas être conservé après le tri.

OrderBy

La méthode OrderBy, quant à elle, effectue un sorte stable. Cela signifie que les éléments égaux conservent leur ordre relatif après le tri. OrderBy utilise en interne un algorithme de tri par fusion.

Comparaison des performances

Les performances de Sort et OrderBy varient en fonction de facteurs tels que la taille de la collection, le type d'éléments , et les critères de tri. En général, le tri est plus rapide pour les petites collections ou lors du tri par types de données primitifs. Cependant, pour les collections plus importantes ou les critères de tri complexes, OrderBy peut être plus efficace grâce à son algorithme de tri stable.

Scénarios d'utilisation

Le tri convient lorsque vous devez effectuer un tri sur place et n'a pas besoin de conserver l'ordre des éléments égaux. OrderBy est préférable lorsque la préservation de l'ordre des éléments égaux est importante ou lorsque vous devez effectuer des opérations supplémentaires (telles que le filtrage ou la projection) après le tri.

Exemple

Considérez l'exemple suivant :

List<Person> persons = new List<Person>();
persons.Add(new Person("P005", "Janson"));
persons.Add(new Person("P002", "Aravind"));
persons.Add(new Person("P007", "Kazhal"));
Copier après la connexion

En utilisant Sort, nous pouvons trier la liste par name :

persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));
Copier après la connexion

En utilisant OrderBy, nous pouvons effectuer un tri stable à l'aide d'un comparateur personnalisé :

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);
    }
}
Copier après la connexion

Dans cet exemple, OrderBy est plus approprié car il garantit que l'ordre de l'égalité les noms sont préservés.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal