首頁 > 後端開發 > C++ > C# Sort 與 OrderBy:我應該何時使用哪一個以獲得最佳效能?

C# Sort 與 OrderBy:我應該何時使用哪一個以獲得最佳效能?

Linda Hamilton
發布: 2025-01-04 20:33:49
原創
720 人瀏覽過

C# Sort vs. OrderBy: When Should I Use Which for Optimal Performance?

C# Sort 與OrderBy:效能與演算法比較

介紹時C# 中,開發人員有兩個主要選項:Sort 和OrderBy。雖然這兩種方法達到相同的最終結果,但它們的底層演算法和性能特徵有所不同。

效能注意事項

與普遍看法相反,Sort 和 OrderBy 不使用相同的排序演算法。排序採用快速排序演算法,這是一種不穩定的排序,這意味著它可能無法保留具有相等值的元素的順序。另一方面,OrderBy 使用穩定排序,確保具有相等值的元素保持其相對順序。

因此,如果排序至關重要並且您需要保留原始序列,建議使用 OrderBy。但是,如果效能是重中之重,並且可以接受不穩定的情況,Sort 可能會提供更快的解決方案。

演算法比較

List.Sort

利用QuickSort 演算法,具有複雜平均度O (n log n)。

    執行不穩定排序。
  • 在記憶體中緩衝整個集合。
  • Enumerable.OrderBy

採用穩定排序演算法。

    可能對集合執行多次迭代,可能會更慢。
  • 不緩衝整個集合,允許漸進檢索已排序的元素。
  • 範例實作

考慮以下程式碼,程式碼對Person 物件清單進行排序name:

對於OrderBy,我們定義一個自訂比較器(NameComparer)來指定比較條件。我們也可以利用預先定義的比較器,例如 StringComparer.InvariantCultureIgnoreCase 進行不區分大小寫的字串比較。

// Using Sort
List<Person> persons = new List<Person>();
...
persons.Sort((p1, p2) => string.Compare(p1.Name, p2.Name, true));

// Using OrderBy
var query = persons.OrderBy(n => n.Name, new NameComparer());
登入後複製

結論

雖然 Sort 和 OrderBy 都提供了對集合進行排序的可行選項,它們的適用性取決於特定要求。如果順序保存至關重要,則 OrderBy 更可取,儘管速度可能較慢。相反,對於可以容忍不穩定的效能密集型場景,Sort 可能會提供更快的解決方案。

以上是C# Sort 與 OrderBy:我應該何時使用哪一個以獲得最佳效能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板