Un modo migliore per ordinare la matrice in ordine decrescente

Ho una matrice di int che devo ordinare discendendo.

Dal momento che non ho trovato alcun metodo per ordinare la matrice in ordine decrescente. Attualmente sto ordinando la matrice in ordine decrescente come sotto

int[] array = new int[] { 3, 1, 4, 5, 2 }; Array.Sort( array ); Array.Reverse( array ); 

Ora, la domanda è questa. C’è un modo migliore di fare lo stesso in c #?

A seconda dell’ordine, puoi fare ciò:

  int[] array = new int[] { 3, 1, 4, 5, 2 }; Array.Sort(array, new Comparison( (i1, i2) => i2.CompareTo(i1) )); 

… o questo :

  int[] array = new int[] { 3, 1, 4, 5, 2 }; Array.Sort(array, new Comparison( (i1, i2) => i1.CompareTo(i2) )); 

i1 e i2 sono appena invertiti.

Utilizzare il metodo LINQ OrderByDescending . Restituisce IOrderedIEnumerable , che puoi riconvertire in Array se ne hai bisogno. Generalmente, gli List<> sono più funzionali di quelli Array .

 array = array.OrderByDescending(c => c).ToArray(); 

Certo, puoi personalizzare l’ordinamento.

È necessario assegnare a Sort () un delegato a un metodo di confronto che verrà utilizzato per ordinare.

Utilizzando un metodo anonimo:

 Array.Sort( array, delegate(int a, int b) { return b - a; //Normal compare is ab }); 

Leggi di più a riguardo:

Ordinamento di matrici
MSDN – Metodo Array.Sort (T [], Confronto)

Sì, è ansible passare al predicato per ordinare. Questa sarebbe la tua implementazione inversa.

È ansible specificare un confronto (implementazione IComparer) come parametro in Array.Sort, l’ordine di ordinamento in realtà dipende dal comparatore. Il comparatore predefinito viene utilizzato nell’ordinamento crescente