Sort(T) Methode (T[], Int32, Int32)
Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Array.Sort<T>-Methode (T[], Int32, Int32)

 

Sortiert die Elemente in einem Bereich von Elementen in einem Array mithilfe der Implementierung der generischen IComparable<T>-Schnittstelle jedes Elements des Array.

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

public static void Sort<T>(
	T[] array,
	int index,
	int length
)

Parameter

array

Das zu sortierende eindimensionale und nullbasierte Array.

index

Der Startindex des zu sortierenden Bereichs.

length

Die Anzahl der Elemente im zu sortierenden Bereich.

Typparameter

T

Der Typ der Elemente des Arrays.

Exception Condition
ArgumentNullException

array ist null.

ArgumentOutOfRangeException

index ist kleiner als die untere Grenze von array.

- oder -

length ist kleiner als Null.

ArgumentException

index und length geben keinen gültigen Bereich in array an.

InvalidOperationException

Mindestens ein Element in array implementiert die generische IComparable<T>-Schnittstelle nicht.

Jedes Element innerhalb des angegebenen Bereichs von Elementen in array implementieren, müssen die IComparable<T> generische Schnittstelle kann Vergleiche mit allen anderen Elementen in array.

Wenn die Sortierung nicht erfolgreich abgeschlossen wird, sind die Ergebnisse nicht definiert.

Diese Methode verwendet die introspective Sortieralgorithmus (Introsort) wie folgt:

  • Wenn die Größe der Partition weniger als 16 Elemente beträgt, wird ein Einfügesortierung Algorithmus verwendet.

  • Übersteigt die Anzahl der Partitionen 2 * LogN, wobei N ist der Bereich des Eingabearrays, verwendet es einen Heapsort Algorithmus.

  • Andernfalls wird ein Quicksort Algorithmus.

Diese Implementierung führt eine instabile Sortierung aus. Das heißt, dass die Reihenfolge gleicher Elemente unter Umständen nicht beibehalten werden kann. Im Gegensatz dazu behält eine stabile Sortierung, die Reihenfolge der Elemente, die gleich sind, bei.

Für Arrays, die mit den Algorithmen Heapsort und wenden die Schnellsortierung im schlimmsten Fall sortiert sind, ist diese Methode eine O (n Protokoll n)-Vorgang, wobei n ist length.

Das folgende Codebeispiel veranschaulicht die Sort<T>(T[], Int32, Int32) generischen Methodenüberladung und die Sort<TKey, TValue>(TKey[], TValue[], Int32, Int32, IComparer<TKey>) generischen Methodenüberladung für das Sortieren eines Bereichs in einem Array.

Das Codebeispiel definiert einen alternativen Vergleich für Zeichenfolgen mit der Bezeichnung ReverseCompare, implementiert die IComparer<string> (IComparer(Of String) in Visual Basic IComparer<String^> in Visual C++) generische Schnittstelle.Der Vergleich ruft der CompareTo(String) -Methode, die Reihenfolge der zu vergleichenden Elemente umkehren, sodass die Zeichenfolgen hoch zu niedrig anstelle von niedrig zu hoch sortieren.

Das Codebeispiel erstellt, und es wird ein Array von Dinosauriernamen, drei Pflanzenfresser und drei Fleischfresser (Tyrannosaurids, um genau zu sein).Die Sort<T>(T[], Int32, Int32) generischen Methodenüberladung wird verwendet, um die letzten drei Elemente des Arrays zu sortieren, die dann angezeigt wird.Die Sort<TKey, TValue>(TKey[], TValue[], Int32, Int32, IComparer<TKey>) generischen-Methodenüberladung mit ReverseCompare der letzten drei Elemente in umgekehrter Reihenfolge zu sortieren.Die vollständig unsortierten Dinosaurier werden erneut angezeigt.

System_CAPS_noteHinweis

Die Aufrufe an die Sort<T>(T[], IComparer<T>) und BinarySearch<T>(T[], T, IComparer<T>) generische Methoden unterscheiden sich nicht von Aufrufen ihrer nicht generischen Entsprechungen, da Visual Basic, c# und C++ wird der Typ des generischen Typparameters aus dem Typ des ersten Arguments abgeleitet.Bei Verwendung der Ildasm.exe (IL Disassembler) um die Microsoft intermediate Language (MSIL) zu untersuchen, sehen Sie, dass die generischen Methoden aufgerufen werden.

using System;
using System.Collections.Generic;

public class ReverseComparer: IComparer<string>
{
    public int Compare(string x, string y)
    {
        // Compare y and x in reverse order.
        return y.CompareTo(x);
    }
}

public class Example
{
    public static void Main()
    {
        string[] dinosaurs = {"Pachycephalosaurus", 
                              "Amargasaurus", 
                              "Mamenchisaurus", 
                              "Tarbosaurus",
                              "Tyrannosaurus", 
                              "Albertasaurus"};

        Console.WriteLine();
        foreach( string dinosaur in dinosaurs )
        {
            Console.WriteLine(dinosaur);
        }

        Console.WriteLine("\nSort(dinosaurs, 3, 3)");
        Array.Sort(dinosaurs, 3, 3);

        Console.WriteLine();
        foreach( string dinosaur in dinosaurs )
        {
            Console.WriteLine(dinosaur);
        }

        ReverseComparer rc = new ReverseComparer();

        Console.WriteLine("\nSort(dinosaurs, 3, 3, rc)");
        Array.Sort(dinosaurs, 3, 3, rc);

        Console.WriteLine();
        foreach( string dinosaur in dinosaurs )
        {
            Console.WriteLine(dinosaur);
        }
    }
}

/* This code example produces the following output:

Pachycephalosaurus
Amargasaurus
Mamenchisaurus
Tarbosaurus
Tyrannosaurus
Albertasaurus

Sort(dinosaurs, 3, 3)

Pachycephalosaurus
Amargasaurus
Mamenchisaurus
Albertasaurus
Tarbosaurus
Tyrannosaurus

Sort(dinosaurs, 3, 3, rc)

Pachycephalosaurus
Amargasaurus
Mamenchisaurus
Tyrannosaurus
Tarbosaurus
Albertasaurus
 */

Universal Windows Platform
Verfügbar seit 4.5
.NET Framework
Verfügbar seit 2.0
Portable Class Library
Unterstützt in: portable .NET platforms
Silverlight
Verfügbar seit 2.0
Windows Phone Silverlight
Verfügbar seit 7.0
Windows Phone
Verfügbar seit 8.1
Zurück zum Anfang
Anzeigen:
© 2016 Microsoft