C# Sort と OrderBy: パフォーマンスとアルゴリズムの比較
概要
コレクションを並べ替える場合C# では、開発者には Sort と OrderBy という 2 つの主要なオプションがあります。どちらのメソッドも同じ最終結果を達成しますが、基礎となるアルゴリズムとパフォーマンス特性が異なります。
パフォーマンスに関する考慮事項
一般的な考えに反して、Sort と OrderBy は使用しません。同じソートアルゴリズム。並べ替えでは、QuickSort アルゴリズムが使用されますが、これは不安定な並べ替えであり、等しい値を持つ要素の順序が保持されない可能性があります。一方、OrderBy は安定した並べ替えを使用し、等しい値を持つ要素が相対的な順序を維持するようにします。
したがって、順序付けが重要であり、元のシーケンスの保持が必要な場合は、OrderBy をお勧めします。ただし、パフォーマンスが最優先であり、不安定性が許容される場合は、Sort の方が高速な解決策が提供される可能性があります。
Algorithm Comparison
List
列挙可能。 OrderBy
実装例
ソートする次のコードを考えてみましょう。名前別の Person オブジェクトのリスト:
// 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());
OrderBy の場合、比較基準を指定するカスタム比較子 (NameComparer) を定義します。大文字と小文字を区別しない文字列比較には、StringComparer.InvariantCultureIgnoreCase などの事前定義された比較子を活用することもできます。
結論
一方、Sort と OrderBy はどちらも、コレクションを並べ替えるための実行可能なオプションを提供します。 、その適合性は特定の要件によって異なります。順序付けの保持が最優先である場合は、遅くなる可能性がありますが、OrderBy をお勧めします。逆に、不安定性が許容できるパフォーマンス重視のシナリオの場合は、Sort がより高速なソリューションを提供する可能性があります。
以上がC# Sort と OrderBy: 最適なパフォーマンスを得るにはどちらを使用する必要があるか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。