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

C#

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

配列(Array)を降順でソートする方法を紹介します。

スポンサーリンク

方法

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

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

Array.Sort() + Array.Reverse()

1つ目は、Array.Sort()と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);
		}
 	}
}

Array.Sort() + delegate

2つ目は、Array.Sort()と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);
		}
 	}
}

Array.Sort() + Comparison()

3つ目は、Array.Sort()と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);
		}
 	}
}

OrderByDescendingOrder()

4つ目は、System.LinqのOrdeByDescending()を使います。

まず、Linqを導入します。

using System.Linq;

次に、配列からOrderByDescending()を呼び出し、引数にラムダ式を指定します。

ラムダ式では、引数を返します。

そして、OrderByDescending()からToArray()を呼び出し、配列に代入します。

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

ここまでの処理で、配列が降順にソートされます。

使用例

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

まとめ

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

  • Array.Sort()とArray.Reverse()を使う方法
  • Array.Sort()とdelegateを使う方法
  • Array.Sort()とComparison()を使う方法
  • System.LinqのOrderByDescending()を使う方法

コメント

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