How to sort a list in C# | List.Sort() Method Set -1
Last Updated :
12 Feb, 2019
List<T>.Sort() Method is used to sort the elements or a portion of the elements in the List<T> using either the specified or default IComparer<T> implementation or a provided Comparison<T> delegate to compare list elements. There are total 4 methods in the overload list of this method as follows:
- Sort(IComparer<T>)
- Sort(Int32, Int32, IComparer)
- Sort()
- Sort(Comparison<T>)
Here, we will discuss the first two methods.
Sort(IComparer<T>) Method
This method is used to sort the elements in the entire List<T> using the specified comparer.
Syntax:
public void Sort (System.Collections.Generic.IComparer<T> comparer);
Here, the comparer is the IComparer<T> implementation to use when comparing elements, or null to use the default comparer Default.
Exceptions:
- InvalidOperationException: If the comparer is null, and the default comparer Default cannot find the implementation of the IComparable<T> generic interface or the IComparable interface for type T.
- ArgumentException: If the implementation of comparer caused an error during the sort. For example, comparer might not return 0 when comparing an item with itself.
Example 1:
using System;
using System.Collections.Generic;
class GFG : IComparer< int >
{
public int Compare( int x, int y)
{
if (x == 0 || y == 0)
{
return 0;
}
return x.CompareTo(y);
}
}
public class geek
{
public static void Main()
{
List< int > list1 = new List< int >
{
1,5,6,2,4,3
};
Console.WriteLine( "Original List" );
foreach ( int g in list1)
{
Console.WriteLine(g);
}
GFG gg = new GFG();
Console.WriteLine( "\nSort with a comparer:" );
list1.Sort(gg);
foreach ( int g in list1 )
{
Console.WriteLine(g);
}
}
}
|
Output:
Original List
1
5
6
2
4
3
Sort with a comparer:
1
2
3
4
5
6
Example 2:
using System;
using System.Collections.Generic;
class GFG : IComparer< string >
{
public int Compare( string x, string y)
{
if (x == null || y == null )
{
return 0;
}
return x.CompareTo(y);
}
}
public class geek
{
public static void Main()
{
List< string > list1 = new List< string >();
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(list1);
GFG gg = new GFG();
Console.WriteLine( "\nSort with a comparer:" );
list1.Sort(gg);
Display(list1);
Console.WriteLine( "\nBinarySearch and Insert D" );
int index = list1.BinarySearch( "D" );
if (index < 0)
{
list1.Insert(~index, "D" );
}
Display(list1);
}
public static void Display(List< string > list)
{
foreach ( string g in list )
{
Console.WriteLine(g);
}
}
}
|
Output:
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
List<T>.Sort(Int32, Int32, IComparer<T>) Method
This method is used to sort the elements in a range of elements in List<T> using the specified comparer.
Syntax:
public void Sort(int index, int len, IComparer<T> comparer)
Parameters:
index : It is the zero-based starting index of the range in which sort will happen.
len : It is the length of the range.
comparer : When comparing elements then use the IComparer implementation or null to use the default comparer Default.
Exceptions:
- ArgumentOutOfRangeException : If indexor len is less than 0.
- ArgumentException : If index and count do not specify a valid range in the List.
- InvalidOperationException : If comparer is null.
Example:
using System;
using System.Collections.Generic;
class GFG : IComparer< string >
{
public int Compare( string x, string y)
{
if (x == null || y == null )
{
return 0;
}
return x.CompareTo(y);
}
}
public class geek
{
public static void Main()
{
List< string > list1 = new List< string >();
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(list1);
GFG gg = new GFG();
Console.WriteLine( "\nSort a range with comparer:" );
list1.Sort(1, range, gg);
Display(list1);
Console.WriteLine( "\nBinarySearch and Insert Dart" );
int index = list1.BinarySearch(0, range,
"Dart" , gg);
if (index < 0)
{
list1.Insert(~index, "Dart" );
range++;
}
Display(list1);
}
public static void Display(List< string > list)
{
foreach ( string g in list)
{
Console.WriteLine(g);
}
}
}
|
Output:
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
Reference:
Share your thoughts in the comments
Please Login to comment...