ArrayList.Sort Metoda

Definice

Seřadí prvky v ArrayList souboru nebo jeho části.

Přetížení

Sort()

Seřadí prvky v celém ArrayListsouboru .

Sort(IComparer)

Seřadí prvky v celém ArrayList souboru pomocí zadaného porovnávače.

Sort(Int32, Int32, IComparer)

Seřadí elementy v rozsahu prvků pomocí ArrayList zadaného porovnávače.

Sort()

Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs

Seřadí prvky v celém ArrayListsouboru .

public virtual void Sort ();

Výjimky

Je ArrayList jen pro čtení.

Příklady

Následující příklad kódu ukazuje, jak seřadit hodnoty v objektu ArrayList.

using System;
using System.Collections;

public class SamplesArrayList1
{
    public static void Main()
    {
        // Creates and initializes a new ArrayList.
        ArrayList myAL = new ArrayList();
        myAL.Add("The");
        myAL.Add("quick");
        myAL.Add("brown");
        myAL.Add("fox");
        myAL.Add("jumps");
        myAL.Add("over");
        myAL.Add("the");
        myAL.Add("lazy");
        myAL.Add("dog");

        // Displays the values of the ArrayList.
        Console.WriteLine("The ArrayList initially contains the following values:");
        PrintValues(myAL);

        // Sorts the values of the ArrayList.
        myAL.Sort();

        // Displays the values of the ArrayList.
        Console.WriteLine("After sorting:");
        PrintValues(myAL);
    }

    public static void PrintValues(IEnumerable myList)
    {
        foreach (Object obj in myList)
            Console.WriteLine("   {0}", obj);
        Console.WriteLine();
    }
}

/*
This code produces the following output.

The ArrayList initially contains the following values:
   The
   quick
   brown
   fox
   jumps
   over
   the
   lazy
   dog

After sorting:
   brown
   dog
   fox
   jumps
   lazy
   over
   quick
   the
   The
*/

Poznámky

Tato metoda používá Array.Sort, který používá algoritmus QuickSort. Algoritmus QuickSort je porovnávací řazení (označované také jako nestabilní řazení), což znamená, že operace porovnání "menší než nebo rovna" určuje, který ze dvou prvků by se měl nacházet jako první v konečném seřazení seznamu. Pokud jsou si však dva prvky rovny, nemusí být jejich původní pořadí zachováno. Stabilní řazení naproti tomu zachovává pořadí prvků se stejnou hodnotou. Chcete-li provést stabilní řazení, musíte implementovat vlastní IComparer rozhraní pro použití s ostatními přetíženími této metody.

V průměru je O(n log n) tato metoda operace, kde n je Count; v nejhorším případě se jedná o O(n^2) operaci.

Viz také

Platí pro

.NET 9 a další verze
Produkt Verze
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Sort(IComparer)

Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs

Seřadí prvky v celém ArrayList souboru pomocí zadaného porovnávače.

public virtual void Sort (System.Collections.IComparer comparer);
public virtual void Sort (System.Collections.IComparer? comparer);

Parametry

comparer
IComparer

Implementace IComparer , která se má použít při porovnávání prvků.

-nebo-

Odkaz null (Nothing v jazyce Visual Basic) pro použití IComparable implementace každého prvku.

Výjimky

Je ArrayList jen pro čtení.

Při porovnávání dvou prvků došlo k chybě.

null je předán pro comparera prvky v seznamu neimplementují IComparable.

Příklady

Následující příklad kódu ukazuje, jak seřadit hodnoty v objektu ArrayList pomocí výchozího porovnávače a vlastního porovnávače, který obrátí pořadí řazení.

using System;
using System.Collections;

public class SamplesArrayList2
{
    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 ArrayList.
        ArrayList myAL = new ArrayList();
        myAL.Add("The");
        myAL.Add("quick");
        myAL.Add("brown");
        myAL.Add("fox");
        myAL.Add("jumps");
        myAL.Add("over");
        myAL.Add("the");
        myAL.Add("lazy");
        myAL.Add("dog");

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

        // Sorts the values of the ArrayList using the default comparer.
        myAL.Sort();
        Console.WriteLine("After sorting with the default comparer:");
        PrintIndexAndValues(myAL);

        // Sorts the values of the ArrayList using the reverse case-insensitive comparer.
        IComparer myComparer = new myReverserClass();
        myAL.Sort(myComparer);
        Console.WriteLine("After sorting with the reverse case-insensitive comparer:");
        PrintIndexAndValues(myAL);
    }

    public static void PrintIndexAndValues(IEnumerable myList)
    {
        int i = 0;
        foreach (Object obj in myList)
            Console.WriteLine("\t[{0}]:\t{1}", i++, obj);
        Console.WriteLine();
    }
}

/*
This code produces the following output.
The ArrayList 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 with the default comparer:
        [0]:    brown
        [1]:    dog
        [2]:    fox
        [3]:    jumps
        [4]:    lazy
        [5]:    over
        [6]:    quick
        [7]:    the
        [8]:    The

After sorting with the reverse case-insensitive comparer:
        [0]:    the
        [1]:    The
        [2]:    quick
        [3]:    over
        [4]:    lazy
        [5]:    jumps
        [6]:    fox
        [7]:    dog
        [8]:    brown
*/

Poznámky

Sort Pomocí metody můžete seřadit seznam objektů pomocí vlastního porovnávače, který implementuje IComparer rozhraní. Pokud předáte null pro comparer, tato metoda použije implementaci IComparable každého prvku. V tomto případě se musíte ujistit, že objekty obsažené v seznamu implementují IComparer rozhraní, jinak dojde k výjimce.

Kromě toho použití IComparable implementace znamená, že seznam provádí porovnávací řazení (označuje se také jako nestabilní řazení); to znamená, že pokud jsou si dva prvky rovny, nemusí být jejich pořadí zachováno. Stabilní řazení naproti tomu zachovává pořadí prvků se stejnou hodnotou. Chcete-li provést stabilní řazení, musíte implementovat vlastní IComparer rozhraní.

V průměru je O(n log n) tato metoda operace, kde n je Count; v nejhorším případě se jedná o O(n^2) operaci.

Viz také

Platí pro

.NET 9 a další verze
Produkt Verze
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0

Sort(Int32, Int32, IComparer)

Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs
Zdroj:
ArrayList.cs

Seřadí elementy v rozsahu prvků pomocí ArrayList zadaného porovnávače.

public virtual void Sort (int index, int count, System.Collections.IComparer comparer);
public virtual void Sort (int index, int count, System.Collections.IComparer? comparer);

Parametry

index
Int32

Počáteční index oblasti, která se má řadit od nuly.

count
Int32

Délka rozsahu, který se má seřadit.

comparer
IComparer

Implementace IComparer , která se má použít při porovnávání prvků.

-nebo-

Odkaz null (Nothing v jazyce Visual Basic) pro použití IComparable implementace každého prvku.

Výjimky

Hodnota index je menší než nula.

-nebo-

Hodnota count je menší než nula.

index a count nezadávejte platný rozsah v ArrayListsouboru .

Je ArrayList jen pro čtení.

Při porovnávání dvou prvků došlo k chybě.

Příklady

Následující příklad kódu ukazuje, jak seřadit hodnoty v oblasti prvků pomocí ArrayList výchozího porovnávače a vlastního porovnávače, který obrátí pořadí řazení.

using System;
using System.Collections;

public class SamplesArrayList3
{
    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 ArrayList.
        ArrayList myAL = new ArrayList();
        myAL.Add("The");
        myAL.Add("QUICK");
        myAL.Add("BROWN");
        myAL.Add("FOX");
        myAL.Add("jumps");
        myAL.Add("over");
        myAL.Add("the");
        myAL.Add("lazy");
        myAL.Add("dog");

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

        // Sorts the values of the ArrayList using the default comparer.
        myAL.Sort(1, 3, null);
        Console.WriteLine("After sorting from index 1 to index 3 with the default comparer:");
        PrintIndexAndValues(myAL);

        // Sorts the values of the ArrayList using the reverse case-insensitive comparer.
        IComparer myComparer = new myReverserClass();
        myAL.Sort(1, 3, myComparer);
        Console.WriteLine("After sorting from index 1 to index 3 with the reverse case-insensitive comparer:");
        PrintIndexAndValues(myAL);
    }

    public static void PrintIndexAndValues(IEnumerable myList)
    {
        int i = 0;
        foreach (Object obj in myList)
            Console.WriteLine("\t[{0}]:\t{1}", i++, obj);
        Console.WriteLine();
    }
}

/*
This code produces the following output.
The ArrayList 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 from index 1 to index 3 with the default comparer:
        [0]:    The
        [1]:    BROWN
        [2]:    FOX
        [3]:    QUICK
        [4]:    jumps
        [5]:    over
        [6]:    the
        [7]:    lazy
        [8]:    dog

After sorting from index 1 to index 3 with the reverse case-insensitive comparer:
        [0]:    The
        [1]:    QUICK
        [2]:    FOX
        [3]:    BROWN
        [4]:    jumps
        [5]:    over
        [6]:    the
        [7]:    lazy
        [8]:    dog
*/

Poznámky

Pokud comparer je nastavena na null, tato metoda provede porovnání řazení (označuje se také jako nestabilní řazení); to znamená, že pokud jsou dva prvky stejné, jejich pořadí nemusí být zachováno. Stabilní řazení naproti tomu zachovává pořadí prvků se stejnou hodnotou. Chcete-li provést stabilní řazení, musíte implementovat vlastní IComparer rozhraní.

V průměru je O(n log n) tato metoda operace, kde n je count; v nejhorším případě se jedná o O(n^2) operaci.

Viz také

Platí pro

.NET 9 a další verze
Produkt Verze
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0