📜  在C#中以降序对数组进行排序的不同方法

📅  最后修改于: 2021-05-29 14:57:33             🧑  作者: Mango

数组是一组由通用名称引用的相似类型的变量。每个数据项都称为数组的元素。将数组的元素从大到小排列被称为以降序对数组进行排序。

例子:

Input : array = {5, 9, 1, 4, 6, 8};
Output : 9, 8, 6, 5, 4, 1

Input : array = {1, 9, 6, 7, 5, 9};
Output : 9 9 7 6 5 1

Input : array = {-8, 9, 7, 7, 0, 9, -9};
Output : 9 9 7 7 0 -8 -9

方法1:使用Array.Sort()和Array.Reverse()方法
首先,排序使用该排序阵列升序然后的Array.Sort()方法中的阵列,使用Array.Reverse()方法扭转它。

// C# program sort an array in decreasing order
// using Array.Sort() and Array.Reverse() Method
using System;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // declaring and initializing the array
        int[] arr = new int[] {1, 9, 6, 7, 5, 9};
  
        // Sort array in ascending order.
        Array.Sort(arr);
  
        // reverse array
        Array.Reverse(arr);
  
        // print all element of array
        foreach(int value in arr)
        {
            Console.Write(value + " ");
        }
    }
}
输出:
9 9 7 6 5 1

方法2:使用CompareTo()方法
您还可以使用CompareTo()方法以降序对数组进行排序。

// C# program sort an array in 
// decreasing order using 
// CompareTo() Method
using System;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // declaring and initializing the array
        int[] arr = new int[] {1, 9, 6, 7, 5, 9};
  
        // Sort the arr from last to first.
        // compare every element to each other
        Array.Sort(arr, new Comparison(
                  (i1, i2) => i2.CompareTo(i1)));
  
        // print all element of array
        foreach(int value in arr)
        {
            Console.Write(value + " ");
        }
    }
}
输出:
9 9 7 6 5 1

方法3:使用委托
在这里,首先使用匿名方法对委托进行Sort()。

// C# program sort an array 
// in decreasing order
using System;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // declaring and initializing the array
        int[] arr = new int[] {1, 9, 6, 7, 5, 9};
  
        // Sort the arr from last to first
        // Normal compare is m-n 
        Array.Sort(arr, delegate(int m, int n)
                                { return n - m; });
  
        // print all element of array
        foreach(int value in arr)
        {
            Console.Write(value + " ");
        }
    }
}
输出:
9 9 7 6 5 1

方法4:使用迭代方式

通过迭代方式在不使用任何内置函数的情况下对数组进行排序。

// C# program sort an array 
// in decreasing order using 
// iterative way
using System;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
        // declaring and initializing the array
        int[] arr = new int[] {1, 9, 6, 7, 5, 9};
  
        int temp;
  
        // traverse 0 to array length
        for (int i = 0; i < arr.Length - 1; i++)
  
            // traverse i+1 to array length
            for (int j = i + 1; j < arr.Length; j++)
  
                // compare array element with 
                // all next element
                if (arr[i] < arr[j]) {
  
                    temp = arr[i];
                    arr[i] = arr[j];
                    arr[j] = temp;
                }
  
        // print all element of array
        foreach(int value in arr)
        {
            Console.Write(value + " ");
        }
    }
}
输出:
9 9 7 6 5 1

方法5:使用LINQ降序
LINQ代表语言集成查询。它是一种统一的查询语法,用于检索和保存来自不同来源的数据。在此, OrderByDescending排序方法用于降序排序。 LINQ返回IOrderedIEnumerable ,使用ToArray()方法将其转换为Array。

// C# program sort an array in decreasing 
// order by using LINQ OrderByDescending 
// method
using System;
using System.Linq;
  
class GFG {
  
    // Main Method
    public static void Main()
    {
  
        // declaring and initializing the 
        // array with 6 positive number
        int[] arr = new int[] {1, 9, 6, 7, 5, 9};
  
        // Sort the arr in decreasing order
        // and return a array
        arr = arr.OrderByDescending(c => c).ToArray();
  
        // print all element of array
        foreach(int value in arr)
        {
            Console.Write(value + " ");
        }
    }
}
输出:
9 9 7 6 5 1