このドキュメントはアーカイブされており、メンテナンスされていません。

Array.Sort メソッド (Array)

Array の各要素によって実装された IComparable を使用して、1 次元 Array 全体の要素を並べ替えます。

名前空間: System
アセンブリ: mscorlib (mscorlib.dll 内)

public static void Sort (
	Array array
)
public static void Sort (
	Array array
)
public static function Sort (
	array : Array
)

パラメータ

array

並べ替え対象となる 1 次元 Array

例外の種類条件

ArgumentNullException

array が null 参照 (Visual Basic では Nothing) です。

RankException

array が多次元です。

InvalidOperationException

array の 1 つ以上の要素が、IComparable インターフェイスを実装していません。

array の各要素は、array 内の他の要素と比較できるように、IComparable インターフェイスを実装する必要があります。

並べ替えが正常に完了しなかった場合、結果は未定義になります。

このメソッドは、QuickSort アルゴリズムを使用します。この実装では不安定な並べ替えを実行します。つまり、2 つの要素が等しかった場合、これらの順序は保持されない可能性があります。一方、安定した並べ替えでは、等しい要素の順序が保持されます。

平均して、このメソッドは O(n log n) 操作です。ここで、narrayLength です。最悪の場合は O(n ^ 2) 操作です。

既定の比較演算子と並べ替え順序を反転するカスタム比較演算子を使用して、Array の値を並べ替える方法を次の例に示します。現在の CultureInfo によって結果が異なることがあります。

using System;
using System.Collections;

public class SamplesArray  {
 
   public class myReverserClass : IComparer  {

      // Calls CaseInsensitiveComparer.Compare with the parameters reversed.
      int IComparer.Compare( Object x, Object y )  {
          return( (new CaseInsensitiveComparer()).Compare( y, x ) );
      }

   }

   public static void Main()  {
 
      // Creates and initializes a new Array and a new custom comparer.
      String[] myArr = { "The", "QUICK", "BROWN", "FOX", "jumps", "over", "the", "lazy", "dog" };
      IComparer myComparer = new myReverserClass();
 
      // Displays the values of the Array.
      Console.WriteLine( "The Array initially contains the following values:" );
      PrintIndexAndValues( myArr );
 
      // Sorts a section of the Array using the default comparer.
      Array.Sort( myArr, 1, 3 );
      Console.WriteLine( "After sorting a section of the Array using the default comparer:" );
      PrintIndexAndValues( myArr );

      // Sorts a section of the Array using the reverse case-insensitive comparer.
      Array.Sort( myArr, 1, 3, myComparer );
      Console.WriteLine( "After sorting a section of the Array using the reverse case-insensitive comparer:" );
      PrintIndexAndValues( myArr );

      // Sorts the entire Array using the default comparer.
      Array.Sort( myArr );
      Console.WriteLine( "After sorting the entire Array using the default comparer:" );
      PrintIndexAndValues( myArr );

      // Sorts the entire Array using the reverse case-insensitive comparer.
      Array.Sort( myArr, myComparer );
      Console.WriteLine( "After sorting the entire Array using the reverse case-insensitive comparer:" );
      PrintIndexAndValues( myArr );

   }
 
   public static void PrintIndexAndValues( String[] myArr )  {
      for ( int i = 0; i < myArr.Length; i++ )  {
         Console.WriteLine( "   [{0}] : {1}", i, myArr[i] );
      }
      Console.WriteLine();
   }
}


/* 
This code produces the following output.

The Array initially contains the following values:
   [0] : The
   [1] : QUICK
   [2] : BROWN
   [3] : FOX
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog

After sorting a section of the Array using the default comparer:
   [0] : The
   [1] : BROWN
   [2] : FOX
   [3] : QUICK
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog

After sorting a section of the Array using the reverse case-insensitive comparer:
   [0] : The
   [1] : QUICK
   [2] : FOX
   [3] : BROWN
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog

After sorting the entire Array using the default comparer:
   [0] : BROWN
   [1] : dog
   [2] : FOX
   [3] : jumps
   [4] : lazy
   [5] : over
   [6] : QUICK
   [7] : the
   [8] : The

After sorting the entire Array using the reverse case-insensitive comparer:
   [0] : the
   [1] : The
   [2] : QUICK
   [3] : over
   [4] : lazy
   [5] : jumps
   [6] : FOX
   [7] : dog
   [8] : BROWN

*/


import System.*;
import System.Collections.*;

public class SamplesArray
{
    public static class MyReverserClass implements IComparer
    {
        // Calls CaseInsensitiveComparer.Compare with the parameters reversed.
        public int Compare(Object x, Object y)
        {
            return (new CaseInsensitiveComparer()).Compare(y, x);
        } //IComparer.Compare
    } //MyReverserClass

    public static void main(String[] args)
    {
        // Creates and initializes a new Array and a new custom comparer.
        String myArr[] = { "The", "QUICK", "BROWN", "FOX", "jumps", "over", 
            "the", "lazy", "dog" };
        IComparer myComparer = new MyReverserClass();

        // Displays the values of the Array.
        Console.WriteLine("The Array initially contains the following values:");
        PrintIndexAndValues(myArr);

        // Sorts a section of the Array using the default comparer.
        Array.Sort(myArr, 1, 3);
        Console.WriteLine("After sorting a section of the Array using the"  
            + " default comparer:");
        PrintIndexAndValues(myArr);

        // Sorts a section of the Array using the reverse case-insensitive 
        // comparer.
        Array.Sort(myArr, 1, 3, myComparer);
        Console.WriteLine("After sorting a section of the Array using the"  
            + " reverse case-insensitive comparer:");
        PrintIndexAndValues(myArr);

        // Sorts the entire Array using the default comparer.
        Array.Sort(myArr);
        Console.WriteLine("After sorting the entire Array using the default"  
            + " comparer:");
        PrintIndexAndValues(myArr);

        // Sorts the entire Array using the reverse case-insensitive comparer.
        Array.Sort(myArr, myComparer);
        Console.WriteLine("After sorting the entire Array using the reverse "  
            + "case-insensitive comparer:");
        PrintIndexAndValues(myArr);
    } //main

    public static void PrintIndexAndValues(String myArr[])
    {
        for (int i = 0; i < myArr.length; i++) {
            Console.WriteLine("   [{0}] : {1}", System.Convert.ToString(i), 
                myArr.get_Item(i));
        }
        Console.WriteLine();
    } //PrintIndexAndValues
} //SamplesArray
/* 
This code produces the following output.

The Array initially contains the following values:
   [0] : The
   [1] : QUICK
   [2] : BROWN
   [3] : FOX
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog

After sorting a section of the Array using the default comparer:
   [0] : The
   [1] : BROWN
   [2] : FOX
   [3] : QUICK
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog

After sorting a section of the Array using the reverse case-insensitive 
comparer:
   [0] : The
   [1] : QUICK
   [2] : FOX
   [3] : BROWN
   [4] : jumps
   [5] : over
   [6] : the
   [7] : lazy
   [8] : dog

After sorting the entire Array using the default comparer:
   [0] : BROWN
   [1] : dog
   [2] : FOX
   [3] : jumps
   [4] : lazy
   [5] : over
   [6] : QUICK
   [7] : the
   [8] : The

After sorting the entire Array using the reverse case-insensitive comparer:
   [0] : the
   [1] : The
   [2] : QUICK
   [3] : over
   [4] : lazy
   [5] : jumps
   [6] : FOX
   [7] : dog
   [8] : BROWN

*/

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。

.NET Framework

サポート対象 : 2.0、1.1、1.0

.NET Compact Framework

サポート対象 : 2.0、1.0
表示: