Array.Sort方法用于对一维数组中的元素进行排序。此方法的重载列表中有17种方法, 如下所示:
Sort <
T>
(T [])方法
Sort <
T>
(T [], IComparer <
T>
)方法
Sort <
T>
(T [], Int32, Int32)方法
Sort <
T>
(T [], 比较<
T>
)方法
Sort(Array, Int32, Int32, IComparer)方法
Sort(Array, Array, Int32, Int32, IComparer)方法
Sort(Array, Int32, Int32)方法
Sort(Array, Array, Int32, Int32)方法
Sort(Array, IComparer)方法
Sort(Array, Array, IComparer)方法
Sort(Array, Array)方法
Sort(Array)方法
Sort <
T>
(T [], Int32, Int32, IComparer <
T>
)方法
Sort <
TKey, TValue>
(TKey [], TValue [])方法
Sort <
TKey, TValue>
(TKey [], TValue [], IComparer <
TKey>
)方法
Sort <
TKey, TValue>
(TKey [], TValue [], Int32, Int32)方法
Sort <
TKey, TValue>
(TKey [], TValue [], Int32, Int32, IComparer <
TKey>
)方法
在这里, 我们将讨论前4种方法。
Sort <
T>
(T [])方法
此方法使用以下命令对数组中的元素进行排序IComparable <
T>
数组每个元素的通用接口实现。
语法:public static void Sort < T> (T [] array); 参数:array:要排序的一维, 从零开始的Array。例外情况:
- ArgumentNullException:如果Array一片空白。
- InvalidOperationException:如果数组中的一个或多个元素未实现IComparable < T> 通用接口。
//C# Program to illustrate the use
//of the Array.Sort<
T>
(T[]) Method
using System;
using System.Collections.Generic;
class GFG {//Main Method
public static void Main()
{
//array elements
string [] arr = new string [5] { "A" , "D" , "X" , "G" , "M" };
foreach ( string g in arr)
{
Console.WriteLine(g);
//display original array
}Console.WriteLine( "\nAfter Sort:" );
Array.Sort(arr);
foreach ( string g in arr)
{
Console.WriteLine(g);
//display sorted array
}Console.WriteLine( "\nB sorts between :" );
//binary Search for "B"
int index = Array.BinarySearch(arr, "B" );
//call "sortT" function
//which is the Sort<
T>
(T[]) function
sortT(arr, index);
Console.WriteLine( "\nF sorts between :" );
index = Array.BinarySearch(arr, "F" );
sortT(arr, index);
}public static void sortT<
T>
(T[] arr, int index)
{//If the index is negative, //it represents the bitwise
//complement of the next larger
//element in the array.
if (index <
0) {index = ~index;
if (index == 0)
Console.Write( "beginning of array" );
else
Console.Write( "{0} and " , arr[index - 1]);
if (index == arr.Length)
Console.WriteLine( "end of array." );
else
Console.WriteLine( "{0}" , arr[index]);
}
}
}
输出如下:
A
D
X
G
MAfter Sort:
A
D
G
M
XB sorts between :
A and DF sorts between :
D and G
Sort < T> (T [], IComparer < T> )方法 此方法使用指定的数组对数组中的元素进行排序IComparer < T> 通用接口。
语法:公共静态无效Sort < T> (T []数组, System.Collections.Generic.IComparer < T> 比较器);参数:T:它是数组元素的类型。 array:这是要排序的一维数组。 comparer:比较元素时使用的是IComparer < T> 通用接口实现, 或者为null以使用每个元素的IComparable < T> 通用接口实现。例外情况:
ArgumentNullException:如果数组为null。
InvalidOperationException:如果比较器为null, 并且没有实现IComparable 通用接口。
ArgumentException:
【如何在C#中对数组排序Array.Sort()|S1】如果执行比较器在排序过程中导致错误。
例子:
//C# program to demonstrate the use of the
//Array.Sort<
T>
(T[], IComparer<
T>
) method
using System;
using System.Collections.Generic;
public class GeeK : IComparer<
string>
{public int Compare( string x, string y)
{
//Compare x and y in reverse order.
return x.CompareTo(y);
}
}class GFG {//Main Method
public static void Main()
{
//array elements
string [] arr = new string [5] { "A" , "D" , "X" , "G" , "M" };
foreach ( string g in arr)
{//display original array
Console.WriteLine(g);
}Console.WriteLine( "\nAfter Sort: " );
GeeK gg = new GeeK();
//Sort<
T>
(T[], IComparer<
T>
) method
Array.Sort(arr, gg);
foreach ( string g in arr)
{
//display sorted array
Console.WriteLine(g);
}Console.WriteLine( "\nD Sorts between :" );
//binary Search for "D"
int index = Array.BinarySearch(arr, "D" );
//call "sortT" function
sortT(arr, index);
Console.WriteLine( "\nF Sorts between :" );
index = Array.BinarySearch(arr, "F" );
sortT(arr, index);
}public static void sortT<
T>
(T[]arr, int index)
{
if (index <
0)
{//If the index is negative, //it represents the bitwise
//complement of the next
//larger element in the array.
index = ~index;
Console.Write( "Not found. Sorts between: " );
if (index == 0)
Console.Write( "Beginning of array and " );
else
Console.Write( "{0} and " , arr[index-1]);
if (index == arr.Length)
Console.WriteLine( "end of array." );
else
Console.WriteLine( "{0}." , arr[index]);
}
else
{
Console.WriteLine( "Found at index {0}." , index);
}
}
}
输出如下:
A
D
X
G
MAfter Sort:
A
D
G
M
XD Sorts between :
Found at index 1.F Sorts between :
Not found. Sorts between: D and G.
Array.Sort < T> (T [], Int32, Int32)方法 此方法使用来对Array范围内的元素进行排序IComparable < T> 数组每个元素的通用接口实现。
语法:public static void Sort < T> (T[]array, 整数索引, 整数长度);异常情况:
参数:array:要排序的一维, 从零开始的Array。
index:它是要排序的范围的起始索引。
length:是要排序的范围内的元素数。
- ArgumentNullException:如果数组为null。
- ArgumentOutOfRangeException:如果索引小于数组的下限或长度小于零。
- ArgumentException:如果索引和长度未在数组中指定有效范围。
- InvalidOperationException:如果数组中的一个或多个元素未实现IComparable < T> 通用接口。
//C# program to demonstrate the use of
//Array.Sort<
T>
(T[], Int32, Int32) method
using System;
using System.Collections.Generic;
public class Geek : IComparer<
string>
{public int Compare( string x, string y)
{
//Compare y and x in reverse order.
return y.CompareTo(x);
}
}public class Example {//Main Method
public static void Main()
{
//Array elements
string [] arr = { "AB" , "CD" , "GH" , "EF" , "MN" , "IJ" };
Console.WriteLine( "Original Array :" );
Display(arr);
Console.WriteLine( "\nSort the array between " +
"index 1 to 4" );
//Array.Sort(T[], Int32, Int32) method
//sort will happen in between
//index 1 to 4
Array.Sort(arr, 1, 4);
Display(arr);
Console.WriteLine( "\nSort the array reversely" +
" in between index 1 to 4" );
//sort will happen in between
//index 1 to 4 reversely
Array.Sort(arr, 1, 4, new Geek());
Display(arr);
}public static void Display( string [] arr)
{
foreach ( string g in arr)
{
Console.WriteLine(g);
}
}
}
输出如下:
Original Array :
AB
CD
GH
EF
MN
IJSort the array between index 1 to 4
AB
CD
EF
GH
MN
IJSort the array reversely in between index 1 to 4
AB
MN
GH
EF
CD
IJ
Array.Sort < T> (T [], 比较< T> )方法 此方法使用指定的Comparison < T> 对数组中的元素进行排序。
语法:public static void Sort < T> (T []数组, Compare < T> 比较);参数:array:要排序的一维基于零的数组。比较:比较元素时使用的compare < T> 。例外情况:
- ArgumentNullException:如果数组为null或比较为null。
- ArgumentException:如果执行比较在排序过程中导致错误。
//C# program to demonstrate the use of the
//Array.Sort<
T>
(T[ ], Comparison<
T>
) Method
using System;
using System.Collections.Generic;
class GFG {private static int CompareComp( string x, string y)
{
if (y == null &
&
x == null ) {//If x and y is null
//then x and y are same
return 0;
}
else {//If x is null but y is not
//null then y is greater.
return -1;
}
}//Main method
public static void Main()
{
string [] arr = { "Java" , "C++" , "Scala" , "C" , "Ruby" , "Python" };
Console.WriteLine( "Original Array: " );
//display original array
Display(arr);
Console.WriteLine( "\nSort with Comparison: " );
//Array.Sort<
T>
(T[], Comparison<
T>
)
//Method
Array.Sort(arr, CompareComp);
//display sorted array
Display(arr);
}//Display function
public static void Display( string [] arr)
{
foreach ( string g in arr)
{
Console.WriteLine(g);
}
}
}
输出如下:
Original Array:
Java
C++
Scala
C
Ruby
PythonSort with Comparison:
Python
Ruby
C
Scala
C++
Java
参考:
- https://docs.microsoft.com/en-us/dotnet/api/system.array.sort?view=netframework-4.7.2
推荐阅读
- 如何在C++中使用STL按降序对数组排序()
- 如何对链表进行排序,该列表按升序和降序交替排序()
- 如何对很多重复的大数组进行排序()
- 如何解决RSA算法问题()
- 12个免费数据恢复软件
- 总结描述TCP三次握手四次挥手
- 描述TCP和UDP区别
- RHCSA考题讲解
- 网卡绑定bond0的实现