C# Sort 與OrderBy:效能與演算法比較
介紹時C# 中,開發人員有兩個主要選項:Sort 和OrderBy。雖然這兩種方法達到相同的最終結果,但它們的底層演算法和性能特徵有所不同。
效能注意事項
與普遍看法相反,Sort 和 OrderBy 不使用相同的排序演算法。排序採用快速排序演算法,這是一種不穩定的排序,這意味著它可能無法保留具有相等值的元素的順序。另一方面,OrderBy 使用穩定排序,確保具有相等值的元素保持其相對順序。
因此,如果排序至關重要並且您需要保留原始序列,建議使用 OrderBy。但是,如果效能是重中之重,並且可以接受不穩定的情況,Sort 可能會提供更快的解決方案。演算法比較
List
利用QuickSort 演算法,具有複雜平均度O (n log n)。
採用穩定排序演算法。
考慮以下程式碼,程式碼對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中文網其他相關文章!