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:
csharp
csharp
csharp
- Sort(IComparer<T>)
- Sort(Int32, Int32, IComparer
) - Sort()
- Sort(Comparison<T>)
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.
// C# program to demonstrate the concept of
// List<T>.Sort(IComparer <T>) 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> list1 = 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("\nSort with a comparer:");
// use of List<T>.Sort(IComparer<T>)
// method. The comparer is "gg"
list1.Sort(gg);
foreach( int g in list1 )
{
// Display sorted list
Console.WriteLine(g);
}
}
}
Output:
Example 2:
Original List 1 5 6 2 4 3 Sort with a comparer: 1 2 3 4 5 6
// C# program to demonstrate the concept of
// List<T>.Sort(IComparer <T>) 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> list1 = 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("\nSort with a comparer:");
// sort the list with a
// specified comparer "gg"
list1.Sort(gg);
// Display sorted List
Display(list1);
Console.WriteLine("\nBinarySearch 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> 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.
// C# program to demonstrate the use of
// List<T>.Sort(Int32, Int32, IComparer<T>)
// 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> list1 = 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("\nSort 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("\nBinarySearch 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> list)
{
foreach(string g in list)
{
Console.WriteLine(g);
}
}
}
Output:
Reference:
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