如何在 C# | Array 中对数组进行排序。排序()方法集–1
原文:https://www . geesforgeks . org/如何对 c-sharp-array-sort-method-set-1 中的数组进行排序/
阵列。排序方法用于对一维数组中的元素进行排序。此方法的重载列表中有 17 种方法,如下所示:
-
排序< T > (T[])方法 排序< T > (T[],我比较< T >)方法 排序< T > (T[],Int32,Int32)方法 *排序< T > (T[],比较< T >)方法 排序(数组,Int32,Int32,IComparer)方法 排序(数组,数组,Int32,Int32,IComparer)方法 *排序(数组,Int32,Int32)方法 排序(数组,数组,Int32,Int32)方法 排序(数组、比较器)方法 *排序(数组、数组、比较器)方法 排序(数组,数组)方法 排序(数组)方法 *排序 (T[],Int32,Int32,IComparer )方法 排序 (TKey[],tvvalue[])方法 排序 (TKey[],tvvalue[],IComparer )方法 *排序 (TKey[],TValue[],Int32,Int32)方法 *Sort(TKey[], TValue[], Int32, Int32, IComparer) Method
这里我们将讨论前 4 种方法。
排序< T > (T[])方法
该方法使用数组中每个元素的 IComparable < T > 通用接口实现对数组中的元素进行排序。
语法:公共静空排序< T > (T[]数组);
参数: 数组:要排序的是一维零基数组。
异常:
- 参数空异常:如果数组为空。
- 无效操作异常:如果数组中的一个或多个元素没有实现 IComparable < T >泛型接口。
示例:
```cs // C# Program to illustrate the use // of the Array.Sort(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[]) function sortT(arr, index);
Console.WriteLine("\nF sorts between :"); index = Array.BinarySearch(arr, "F"); sortT(arr, index); }
public static void sortT(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]); } } } ```
Output:
```cs A D X G M
After Sort: A D G M X
B sorts between : A and D
F sorts between : D and G
```
排序< T > (T[],我比较< T >)方法
该方法使用指定的比较器< T > 通用接口对数组中的元素进行排序。
语法:公共静空排序< T > (T[]数组,系统。集合.类属.比较器< T >比较器;
参数:
- T :是数组元素的类型。
- 数组:是要排序的一维数组。
- 比较器:比较元素时使用 IComparer < T > 泛型接口实现,使用每个元素的 IComparable < T >泛型接口实现为空。
异常:
- ArgumentNullException: 如果数组为空。
- 无效操作异常:如果比较器为空,并且没有实现可比较的T7】通用接口。
-
ArgumentException:
如果比较器的实现导致排序时出错。
示例:
```cs // C# program to demonstrate the use of the // Array.Sort(T[], IComparer) method using System; using System.Collections.Generic;
public class GeeK : IComparer {
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[], IComparer) 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[]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); } } } ```
Output:
```cs A D X G M
After Sort: A D G M X
D Sorts between : Found at index 1.
F Sorts between : Not found. Sorts between: D and G.
```
阵列。排序< T > (T[],Int32,Int32)方法
该方法使用数组中每个元素的 IComparable < T > 通用接口实现对数组中的某个范围内的元素进行排序。
语法:公共静态空排序< T > (T[]数组,int 索引,int 长度);
参数:
- 数组:是要排序的一维、从零开始的数组。
- 索引:是要排序范围的起始索引。
- 长度:是要排序的范围内的元素个数。
异常:
- ArgumentNullException: 如果数组为空。
- argumentoutofrangerexception:如果索引小于数组的下限或者长度小于零。
- 参数异常:如果索引和长度没有在数组中指定有效的范围。
- 无效操作异常:如果数组中的一个或多个元素没有实现 IComparable < T > 泛型接口。
示例:
```cs // C# program to demonstrate the use of // Array.Sort(T[], Int32, Int32) method using System; using System.Collections.Generic;
public class Geek : IComparer {
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); } } } ```
Output:
```cs Original Array : AB CD GH EF MN IJ
Sort the array between index 1 to 4 AB CD EF GH MN IJ
Sort the array reversely in between index 1 to 4 AB MN GH EF CD IJ
```
阵列。排序< T > (T[],比较< T >)方法
此方法使用指定的比较对数组中的元素进行排序。
语法:公静虚空排序< T > (T【】阵,比较< T >比较);
参数:
- 数组:是要排序的一维从零开始的数组。
- 比较:是比较元素时要用到的比较< T >。
异常:
- ArgumentNullException :如果数组为空或者比较为空。
- ArgumentException :如果执行比较导致排序时出错。
示例:
```cs // C# program to demonstrate the use of the // Array.Sort(T[ ], Comparison) 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[], Comparison) // 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); } } } ```
Output:
```cs Original Array: Java C++ Scala C Ruby Python
Sort with Comparison: Python Ruby C Scala C++ Java
```
参考:
版权属于:月萌API www.moonapi.com,转载请注明出处