0 von 2 fanden dies hilfreich - Dieses Thema bewerten.

Array.Sort-Methode (Array, IComparer)

Sortiert die Elemente in einem eindimensionalen Array mithilfe des angegebenen IComparer.

Namespace: System
Assembly: mscorlib (in mscorlib.dll)

public static void Sort (
	Array array,
	IComparer comparer
)
public static void Sort (
	Array array, 
	IComparer comparer
)
public static function Sort (
	array : Array, 
	comparer : IComparer
)

Parameter

array

Das zu sortierende eindimensionale Array.

comparer

Die IComparer-Implementierung, die beim Vergleich von Elementen verwendet werden soll.

- oder -

NULL (Nothing in Visual Basic), wenn die IComparable-Implementierung des jeweiligen Elements verwendet werden soll.

AusnahmetypBedingung

ArgumentNullException

array ist NULL (Nothing in Visual Basic).

RankException

array ist mehrdimensional.

InvalidOperationException

comparer ist NULL (Nothing in Visual Basic), und mindestens ein Element in array implementiert die IComparable-Schnittstelle nicht.

ArgumentException

Die Implementierung von comparer hat während der Sortierung einen Fehler verursacht. comparer kann z. B. möglicherweise nicht 0 zurückgeben, wenn ein Element mit sich selbst verglichen wird.

Wenn comparerNULL (Nothing in Visual Basic) ist, muss jedes Element von array die IComparable-Schnittstelle implementieren, damit es mit jedem anderen Element von array verglichen werden kann.

Wenn der Sortiervorgang nicht erfolgreich abgeschlossen werden kann, ist das Ergebnis undefiniert.

Diese Methode verwendet den QuickSort-Algorithmus. Diese Implementierung führt eine instabile Sortierung durch, d. h., bei zwei gleichen Elementen wird die Reihenfolge möglicherweise nicht beibehalten. Bei einer stabilen Sortierung wird im Gegensatz dazu die Reihenfolge von gleichen Elementen beibehalten.

Im Durchschnitt ist diese Methode eine O(n log n)-Operation, wobei nLength von array ist. Im ungünstigsten Fall stellt sie eine O(n^2)-Operation dar.

Im folgenden Codebeispiel wird das Sortieren der Werte in einem Array mithilfe des Standardcomparers und eines benutzerdefinierten Comparers veranschaulicht, der die Sortierreihenfolge umkehrt. Beachten Sie, dass das Ergebnis in Abhängigkeit von der aktuellen CultureInfo variieren kann.

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 für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
© 2013 Microsoft. Alle Rechte vorbehalten.