How to sort a list in C# | List.Sort() Method Set -1
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:
// 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); } } } |
Original List 1 5 6 2 4 3 Sort with a comparer: 1 2 3 4 5 6
Example 2:
// 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); } } } |
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:
// 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); } } } |
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:
Please Login to comment...