アセンブリ: mscorlib (mscorlib.dll 内)
Public Sub Sort
Dim instance As List(Of T) instance.Sort
public void Sort ()
public: void Sort ()
public void Sort ()
public function Sort ()
| 例外の種類 | 条件 |
|---|---|
| 既定の比較演算子 Comparer.Default は、IComparable ジェネリック インターフェイスの実装、または型 T の IComparable インターフェイスの実装を見つけることができません。 |
このメソッドは、型 T の既定の比較演算子 Comparer.Default を使用して、リスト要素の順序を確認します。Comparer.Default プロパティは、型 T が IComparable ジェネリック インターフェイスを実装しているかどうかをチェックし、使用できる場合は、その実装を使用します。そうでない場合、Comparer.Default は、型 T が IComparable インターフェイスを実装しているかどうかをチェックします。型 T がいずれのインターフェイスも実装しない場合、Comparer.Default は InvalidOperationException をスローします。
このメソッドは、QuickSort アルゴリズムを使用する System.Array.Sort を使用します。この実装では不安定な並べ替えを実行します。つまり、2 つの要素が等しかった場合、これらの順序は保持されない可能性があります。一方、安定した並べ替えでは、等しい要素の順序が保持されます。
平均して、このメソッドは O(n log n) 操作です。ここで、n は Count です。最悪の場合は O(n ^ 2) 操作です。
Sort メソッドのオーバーロードと BinarySearch(T) メソッドのオーバーロードを使用したコード例を次に示します。文字列の List が作成され、4 つの文字列が不特定の順序で設定されます。リストが表示され、並べ替えられて、再表示されます。
次に BinarySearch(T) メソッドのオーバーロードを使用して、リストに存在しない 2 つの文字列を検索し、Insert メソッドを使用してそれらを挿入します。その文字列はリストに存在しないため、BinarySearch メソッドの戻り値はどちらの場合も負の数です。この負の数のビットごとの補数 (C# と Visual C++ では ~ 演算子、Visual Basic では -1 の Xor) を取得すると、リスト内の、検索文字列よりも大きい最初の要素のインデックスが生成されます。この位置に挿入すると、並べ替え順序は保持されます。2 番目の検索文字列は、リスト内のいずれの要素よりも大きいため、挿入位置はリストの末尾です。
Imports System Imports System.Collections.Generic Public Class Example Public Shared Sub Main() Dim dinosaurs As New List(Of String) dinosaurs.Add("Pachycephalosaurus") dinosaurs.Add("Amargasaurus") dinosaurs.Add("Mamenchisaurus") dinosaurs.Add("Deinonychus") Console.WriteLine() For Each dinosaur As String In dinosaurs Console.WriteLine(dinosaur) Next Console.WriteLine(vbLf & "Sort") dinosaurs.Sort Console.WriteLine() For Each dinosaur As String In dinosaurs Console.WriteLine(dinosaur) Next Console.WriteLine(vbLf & _ "BinarySearch and Insert ""Coelophysis"":") Dim index As Integer = dinosaurs.BinarySearch("Coelophysis") If index < 0 Then index = index Xor -1 dinosaurs.Insert(index, "Coelophysis") End If Console.WriteLine() For Each dinosaur As String In dinosaurs Console.WriteLine(dinosaur) Next Console.WriteLine(vbLf & _ "BinarySearch and Insert ""Tyrannosaurus"":") index = dinosaurs.BinarySearch("Tyrannosaurus") If index < 0 Then index = index Xor -1 dinosaurs.Insert(index, "Tyrannosaurus") End If Console.WriteLine() For Each dinosaur As String In dinosaurs Console.WriteLine(dinosaur) Next End Sub End Class ' This code example produces the following output: ' 'Pachycephalosaurus 'Amargasaurus 'Mamenchisaurus 'Deinonychus ' 'Sort ' 'Amargasaurus 'Deinonychus 'Mamenchisaurus 'Pachycephalosaurus ' 'BinarySearch and Insert "Coelophysis": ' 'Amargasaurus 'Coelophysis 'Deinonychus 'Mamenchisaurus 'Pachycephalosaurus ' 'BinarySearch and Insert "Tyrannosaurus": ' 'Amargasaurus 'Coelophysis 'Deinonychus 'Mamenchisaurus 'Pachycephalosaurus 'Tyrannosaurus
using System; using System.Collections.Generic; public class Example { public static void Main() { List<string> dinosaurs = new List<string>(); dinosaurs.Add("Pachycephalosaurus"); dinosaurs.Add("Amargasaurus"); dinosaurs.Add("Mamenchisaurus"); dinosaurs.Add("Deinonychus"); Console.WriteLine(); foreach(string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } Console.WriteLine("\nSort"); dinosaurs.Sort(); Console.WriteLine(); foreach(string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } Console.WriteLine("\nBinarySearch and Insert \"Coelophysis\":"); int index = dinosaurs.BinarySearch("Coelophysis"); if (index < 0) { dinosaurs.Insert(~index, "Coelophysis"); } Console.WriteLine(); foreach(string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } Console.WriteLine("\nBinarySearch and Insert \"Tyrannosaurus\":"); index = dinosaurs.BinarySearch("Tyrannosaurus"); if (index < 0) { dinosaurs.Insert(~index, "Tyrannosaurus"); } Console.WriteLine(); foreach(string dinosaur in dinosaurs) { Console.WriteLine(dinosaur); } } } /* This code example produces the following output: Pachycephalosaurus Amargasaurus Mamenchisaurus Deinonychus Sort Amargasaurus Deinonychus Mamenchisaurus Pachycephalosaurus BinarySearch and Insert "Coelophysis": Amargasaurus Coelophysis Deinonychus Mamenchisaurus Pachycephalosaurus BinarySearch and Insert "Tyrannosaurus": Amargasaurus Coelophysis Deinonychus Mamenchisaurus Pachycephalosaurus Tyrannosaurus */
using namespace System; using namespace System::Collections::Generic; void main() { List<String^>^ dinosaurs = gcnew List<String^>(); dinosaurs->Add("Pachycephalosaurus"); dinosaurs->Add("Amargasaurus"); dinosaurs->Add("Mamenchisaurus"); dinosaurs->Add("Deinonychus"); Console::WriteLine(); for each(String^ dinosaur in dinosaurs) { Console::WriteLine(dinosaur); } Console::WriteLine("\nSort"); dinosaurs->Sort(); Console::WriteLine(); for each(String^ dinosaur in dinosaurs) { Console::WriteLine(dinosaur); } Console::WriteLine("\nBinarySearch and Insert \"Coelophysis\":"); int index = dinosaurs->BinarySearch("Coelophysis"); if (index < 0) { dinosaurs->Insert(~index, "Coelophysis"); } Console::WriteLine(); for each(String^ dinosaur in dinosaurs) { Console::WriteLine(dinosaur); } Console::WriteLine("\nBinarySearch and Insert \"Tyrannosaurus\":"); index = dinosaurs->BinarySearch("Tyrannosaurus"); if (index < 0) { dinosaurs->Insert(~index, "Tyrannosaurus"); } Console::WriteLine(); for each(String^ dinosaur in dinosaurs) { Console::WriteLine(dinosaur); } } /* This code example produces the following output: Pachycephalosaurus Amargasaurus Mamenchisaurus Deinonychus Sort Amargasaurus Deinonychus Mamenchisaurus Pachycephalosaurus BinarySearch and Insert "Coelophysis": Amargasaurus Coelophysis Deinonychus Mamenchisaurus Pachycephalosaurus BinarySearch and Insert "Tyrannosaurus": Amargasaurus Coelophysis Deinonychus Mamenchisaurus Pachycephalosaurus Tyrannosaurus */
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。