logo

Cómo ordenar una lista en C# | Conjunto de métodos List.Sort() -1

Método List.Sort() se utiliza para ordenar los elementos o una parte de los elementos en la Lista utilizando la implementación IComparer especificada o predeterminada o un delegado de comparación proporcionado para comparar elementos de la lista. Hay un total de 4 métodos en la lista de sobrecarga de este método de la siguiente manera:



  1. Ordenar (IComparer)
  2. Ordenar (Int32, Int32, IComparer)
  3. Clasificar()
  4. Ordenar (comparación)

Aquí, discutiremos los dos primeros métodos.

Método de clasificación (IComparer)

Este método se utiliza para ordenar los elementos de la Lista completa utilizando el comparador especificado.

Sintaxis:



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

Aquí, el comparador es la implementación de IComparer que se usará al comparar elementos, o null para usar el comparador predeterminado Default.

Excepciones:

    InvalidOperationException: si el comparador es nulo y el comparador predeterminado Default no puede encontrar la implementación de la interfaz genérica IComparable o la interfaz IComparable para el tipo T. ArgumentException: si la implementación del comparador provocó un error durante la clasificación. Por ejemplo, es posible que el comparador no devuelva 0 al comparar un elemento consigo mismo.

Ejemplo 1:




código de muestra c#



// 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>>lista1 =>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);> > >}> >}> }>

>

>

Producción:

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

Ejemplo 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>>lista1 =>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>>lista)> >{> >foreach>(>string> g>in> list )> >{> >Console.WriteLine(g);> >}> >}> }>

>

>

Producción:

 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étodo List.Sort(Int32, Int32, IComparer)

Este método se utiliza para ordenar los elementos en un rango de elementos en la Lista utilizando el comparador especificado.

Sintaxis:

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

Parámetros:

índice : Es el índice inicial de base cero del rango en el que se realizará la clasificación.

solo : Es la longitud del rango.

comparar : Al comparar elementos, utilice el Comparador implementación o nulo para utilizar el comparador predeterminado Default.

Excepciones:

    ArgumentoOutOfRangeException: si índice o solo es menor que 0. ArgumentException: si índice y el recuento no especifican un rango válido en el Lista . Excepción de operación no válida: si comparar es nulo.

Ejemplo:




// 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>>lista1 =>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>>lista)> >{> >foreach>(>string> g>in> list)> >{> >Console.WriteLine(g);> >}> >}> }>

>

>

Producción:

 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>

Referencia: