logo

Com ordenar una llista en C# | List.Sort() Conjunt de mètodes -1

Mètode List.Sort(). s'utilitza per ordenar els elements o una part dels elements de la llista utilitzant la implementació IComparer especificada o predeterminada o un delegat de comparació proporcionat per comparar els elements de la llista. Hi ha un total de 4 mètodes a la llista de sobrecàrrega d'aquest mètode de la següent manera:



  1. Ordena (IComparer)
  2. Ordena (Int32, Int32, IComparer)
  3. Ordena ()
  4. Ordena (comparació)

Aquí parlarem dels dos primers mètodes.

Mètode Sort(IComparer).

Aquest mètode s'utilitza per ordenar els elements de tota la llista mitjançant el comparador especificat.

Sintaxi:



public void Sort (System.Collections.Generic.IComparer comparer);>

Aquí, el comparador és la implementació IComparer que s'ha d'utilitzar quan es comparen elements, o null per utilitzar el comparador predeterminat.

Excepcions:

    InvalidOperationException: si el comparador és nul i el comparador predeterminat, per defecte no pot trobar la implementació de la interfície genèrica IComparable o la interfície IComparable per al tipus T. ArgumentException: si la implementació del comparador ha provocat un error durant l'ordenació. Per exemple, el comparador pot no retornar 0 quan es compara un element amb ell mateix.

Exemple 1:




Python imprimeix amb 2 decimals



// C# program to demonstrate the concept of> // List.Sort(IComparer ) method> using> System;> using> System.Collections.Generic;> > class> GFG : IComparer<>int>>> {> >public> int> Compare(>int> x,>int> y)> >{> >if> (x == 0 || y == 0)> >{> >return> 0;> >}> > >// CompareTo() method> >return> x.CompareTo(y);> > >}> }> > public> class> geek> {> > >// Main Method> >public> static> void> Main()> >{> > >// List initialize> >List<>int>>llista1 =>new> List<>int>>> >{> > >// list elements> >1,5,6,2,4,3> > >};> > >Console.WriteLine(>'Original List'>);> > >foreach>(>int> g>in> list1)> >{> > >// Display Original List> >Console.WriteLine(g);> > >}> > >// 'gg' is the object oif class GFG> >GFG gg =>new> GFG();> > >Console.WriteLine(>' Sort with a comparer:'>);> > >// use of List.Sort(IComparer)> >// method. The comparer is 'gg'> >list1.Sort(gg);> > >foreach>(>int> g>in> list1 )> >{> > >// Display sorted list> >Console.WriteLine(g);> > >}> >}> }>

>

>

Sortida:

 Original List 1 5 6 2 4 3 Sort with a comparer: 1 2 3 4 5 6>

Exemple 2:




// C# program to demonstrate the concept of> // List.Sort(IComparer ) method> using> System;> using> System.Collections.Generic;> > class> GFG : IComparer<>string>>> {> >public> int> Compare(>string> x,>string> y)> >{> > >if> (x ==>null> || y ==>null>)> >{> >return> 0;> >}> > >// 'CompareTo()' method> >return> x.CompareTo(y);> > >}> }> > public> class> geek> {> > >// Main Method> >public> static> void> Main()> >{> >List<>string>>llista1 =>new> List<>string>>();> > >// list elements> >list1.Add(>'A'>);> >list1.Add(>'I'>);> >list1.Add(>'G'>);> >list1.Add(>'B'>);> >list1.Add(>'E'>);> >list1.Add(>'H'>);> >list1.Add(>'F'>);> >list1.Add(>'C'>);> >list1.Add(>'J'>);> > >Console.WriteLine(>'Original List'>);> > >// Display Original List> >Display(list1);> > >// 'gg' is the object> >GFG gg =>new> GFG();> > >Console.WriteLine(>' Sort with a comparer:'>);> > >// sort the list with a> >// specified comparer 'gg'> >list1.Sort(gg);> > >// Display sorted List> >Display(list1);> > >Console.WriteLine(>' BinarySearch and Insert D'>);> > >// Binary Search for 'D'> >// using List.BinarySearch(T) method> >int> index = list1.BinarySearch(>'D'>);> > >if> (index <0)> >{> > >// range++;> >list1.Insert(~index,>'D'>);> > >}> > >// Display the List after> >// inserting 'D'> >Display(list1);> > >}> > >// Display function> >public> static> void> Display(List<>string>>llista)>>> {> >foreach>(>string> g>in> list )> >{> >Console.WriteLine(g);> >}> >}> }>

>

>

Sortida:

 Original List A I G B E H F C J Sort with a comparer: A B C E F G H I J BinarySearch and Insert D A B C D E F G H I J>
Mètode List.Sort (Int32, Int32, IComparer).

Aquest mètode s'utilitza per ordenar els elements en un rang d'elements a la llista mitjançant el comparador especificat.

Sintaxi:

public void Sort(int index, int len, IComparer comparer)>

Paràmetres:

índex : és l'índex inicial de base zero de l'interval en què es produirà l'ordenació.

només : És la longitud del rang.

comparar : Quan compareu elements, feu servir el IComparer implementació o null per utilitzar el comparador predeterminat Per defecte.

Excepcions:

    ArgumentOutOfRangeException: si índex o només és menor que 0. ArgumentException : Si índex i el recompte no especifiquen un interval vàlid al Llista . InvalidOperationException: si comparar és nul·la.

Exemple:




// C# program to demonstrate the use of> // List.Sort(Int32, Int32, IComparer)> // Method> using> System;> using> System.Collections.Generic;> > class> GFG : IComparer<>string>>> {> >public> int> Compare(>string> x,>string> y)> >{> >if> (x ==>null> || y ==>null>)> >{> >return> 0;> >}> > >// 'CompareTo()' method> >return> x.CompareTo(y);> > >}> }> > public> class> geek> {> >public> static> void> Main()> >{> >List<>string>>llista1 =>new> List<>string>>();> > >// list elements> >list1.Add(>'C++'>);> >list1.Add(>'Java'>);> >list1.Add(>'C'>);> >list1.Add(>'Python'>);> >list1.Add(>'HTML'>);> >list1.Add(>'CSS'>);> >list1.Add(>'Scala'>);> >list1.Add(>'Ruby'>);> >list1.Add(>'Perl'>);> > >int> range = 4;> >Console.WriteLine(>'Original List'>);> > >// Display Original List> >Display(list1);> > >// 'gg' is the object> >GFG gg =>new> GFG();> > >Console.WriteLine(>' Sort a range with comparer:'>);> > >// sort the list within a> >// range of index 1 to 4> >// where range = 4> >list1.Sort(1, range, gg);> > >// Display sorted List> >Display(list1);> > >Console.WriteLine(>' BinarySearch and Insert Dart'>);> > >// Binary Search and storing> >// index value to 'index'> >int> index = list1.BinarySearch(0, range,> >'Dart'>, gg);> > >if> (index <0)> >{> >list1.Insert(~index,>'Dart'>);> >range++;> >}> > >// Display the List> >// after inserting 'Dart'> >Display(list1);> > >}> > >// Display function> >public> static> void> Display(List<>string>>llista)>>> {> >foreach>(>string> g>in> list)> >{> >Console.WriteLine(g);> >}> >}> }>

>

>

Sortida:

 Original List C++ Java C Python HTML CSS Scala Ruby Perl Sort a range with comparer: C++ C HTML Java Python CSS Scala Ruby Perl BinarySearch and Insert Dart C++ C Dart HTML Java Python CSS Scala Ruby Perl>

Referència: