首頁 > 後端開發 > 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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板