[C#]配列をArray.Sort()で降順にソートするには?

C#

どうも、ちょげ(@chogetarou)です。

配列をArray.Sort()を使って、降順にソートする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列をArray.Sort()で降順にソートする方法は、3つあります。

Array.Reverse()

1つ目は、Array.Reverse()を使う方法です。

まず、Array.Sort()を呼び出します。

Array.Sort()の引数に配列を指定します。

そして、Array.Reverse()を呼び出し、引数に配列を指定します。

Array.Sort(array);
Array.Reverse(array);

Array.Sort()との後にArray.Reverse()を呼び出すことで、配列を降順でソートできます。

使用例

using System;
public class Example
{   
	public static void Main()
	{
		int[] numbers = new int[7] { 3, 1, 5, 7, 2, 6, 4, };
		
		Array.Sort(numbers);
		
		Array.Reverse(numbers);

		foreach (var i in numbers) {
		    Console.WriteLine(i);
		}
 	}
}

delegate

2つ目は、delegate()を使う方法です。

まず、Array.Sort()を呼び出します。

Array.Sort()の第1引数に配列、第2引数に引数を2つ持つdelegate(a, b){}を指定します。

そして、delegate(a, b){}で第2引数を第1引数で引く式を返します。

Array.Sort(array, delegate(int a, int b) { return b - a; });

上記のArray.Sort()は、配列を降順でソートします。

使用例

using System;
public class Example
{   
	public static void Main()
	{
		int[] numbers = new int[7] { 3, 1, 5, 7, 2, 6, 4, };
		
		Array.Sort(numbers, delegate(int x, int y) { return y - x; });
		
		foreach (var i in numbers) {
		    Console.WriteLine(i);
		}
 	}
}

Comparison()

3つ目は、Comparison()を使う方法です。

まず、Array.Sort()を呼び出します。

そして、Array.Sort()の第1引数に配列、第2引数に「new Comparison((a, b) => b.CompareTo(a))」を指定します。

Array.Sort(array, new Comparison<int>((a, b) => b.CompareTo(a)));

上記のArray.Sort()は、配列を降順でソートします。

使用例

using System;
public class Example
{   
	public static void Main()
	{
		int[] numbers = new int[7] { 3, 1, 5, 7, 2, 6, 4, };
		
		Array.Sort(numbers, new Comparison<int>((a, b) => b.CompareTo(a)));
		
		foreach (var i in numbers) {
		    Console.WriteLine(i);
		}
 	}
}

まとめ

配列をArray.Sort()で降順にソートする方法は、次の3つです。

  • Array.Reverse()を使う方法
  • delegateを使う方法
  • Comparison()を使う方法

コメント

タイトルとURLをコピーしました