首页 > 后端开发 > C++ > C# 排序:排序与 OrderBy:我什么时候应该使用哪个?

C# 排序:排序与 OrderBy:我什么时候应该使用哪个?

Barbara Streisand
发布: 2024-12-30 02:05:09
原创
985 人浏览过

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

C# 排序:Sort 与 OrderBy

在 C# 中,我们有多种对集合进行排序的选项,包括 Sort 和 OrderBy。本文将深入探讨这两种方法及其各自算法之间的差异。

排序

Sort 方法使用 QuickSort 算法执行就地排序。这是一种不稳定的排序算法,意味着排序后可能无法保留相等元素的顺序。

OrderBy

OrderBy 方法则执行稳定排序。这意味着相等的元素在排序后保持其相对顺序。 OrderBy 内部使用了归并排序算法。

性能对比

Sort 和 OrderBy 的性能因集合大小、元素类型等因素而异,以及排序标准。一般来说,对于小型集合或按原始数据类型排序时,排序速度更快。然而,对于较大的集合或复杂的排序条件,OrderBy 因其稳定的排序算法可以更加高效。

使用场景

排序适合需要执行的情况就地排序,不需要保留相等元素的顺序。当保留相等元素的顺序很重要或者当您需要在排序后执行其他操作(例如过滤或投影)时,OrderBy 是更好的选择。

示例

考虑下面的例子:

List<Person> persons = new List<Person>();
persons.Add(new Person("P005", "Janson"));
persons.Add(new Person("P002", "Aravind"));
persons.Add(new Person("P007", "Kazhal"));
登录后复制

使用Sort,我们可以对列表进行排序name:

persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));
登录后复制

使用 OrderBy,我们可以使用自定义比较器执行稳定排序:

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);
    }
}
登录后复制

在这个例子中,OrderBy 更合适,因为它确保相等的顺序名称被保留。

以上是C# 排序:排序与 OrderBy:我什么时候应该使用哪个?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板