C#の非静的メソッドを使って1次元配列を降順に並べ替える方法
C#では、Array.Sort()などの組み込みメソッドを使わずに、自作の非静的メソッドとネストしたforループを組み合わせることで、1次元配列を降順(大きい順)に並べ替えることができます。ここでは、その基本的な実装方法を解説します。
1. 並べ替え前のリストを用意する
まず、並べ替えていない整数型の配列を定義します。
int[] list = {87, 45, 56, 22, 84, 65};2. ネストしたforループで並べ替える
次に、関数(非静的メソッド)に渡された配列を並べ替えるために、二重のforループを使用します。外側のループで基準となる要素を決め、内側のループでそれ以降の要素と比較しながら、より大きい値を先頭側へ入れ替えていく仕組みです。これは「選択ソート」と呼ばれるアルゴリズムの一種です。
for(int i=0; i<arr.Length; i++) {
for(int j=i+1; j<arr.Length; j++) {
if(arr[i]<=arr[j]) {
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
Console.Write(arr[i] + " ");
}条件式 if(arr[i]<=arr[j]) の部分で、後ろの要素の方が大きい(または等しい)場合に値を交換しています。この比較条件を逆にすれば、昇順の並べ替えにも簡単に変更できます。
3. 完全なサンプルコード
以下は、1次元配列を降順に並べ替える処理を非静的メソッドとして実装した完全なコード例です。
例
using System;
namespace Demo {
public class MyApplication {
public static void Main(string[] args) {
int[] list = {87, 45, 56, 22, 84, 65};
Console.WriteLine("Original Unsorted List");
foreach (int i in list) {
Console.Write(i + " ");
}
MyApplication m = new MyApplication();
m.sortFunc(list);
}
public void sortFunc(int[] arr) {
int temp = 0;
Console.WriteLine("\nSorted List");
for(int i=0; i< arr.Length; i++) {
for(int j=i+1; j<arr.Length; j++) {
if(arr[i]<=arr[j]) {
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
}
}
Console.Write(arr[i] + " ");
}
}
}
}出力結果
Original Unsorted List 87 45 56 22 84 65 Sorted List 87 84 65 56 45 22
ポイントのまとめ
- 非静的メソッドの呼び出し:
Mainメソッドはstaticであるため、非静的なsortFuncを呼び出すには、まずクラスのインスタンス(MyApplication m = new MyApplication();)を生成する必要があります。 - 参照渡しの性質: 配列は参照型なので、メソッド内での要素の入れ替えは呼び出し元の配列にも反映されます。
- 計算量: この二重ループ方式の計算量はO(n²)です。要素数が多い場合は、
Array.Sort()とArray.Reverse()を組み合わせるか、LINQのOrderByDescending()を使うと効率的です。
-
【C#入門】1次元配列を逆順に反転して表示する方法
C#で1次元配列の要素を逆順に並べ替えて表示したい場合、Array.Reverse() メソッドを使うのが最も簡単な方法です。この記事では、配列の宣言から反転・表示までの手順をサンプルコード付きで解説します。 手順1:1次元配列を宣言して初期化する まず、反転させたい1次元配列を宣言し、初期化します。 int[] arr = { 35, 12, 66, 90, 34, 2, 64 }; 手順2:Array.Reverse() で配列を反転する 配列を逆順にするには、Array.Reverse() メソッドを呼び出すだけです。 Array.Reverse(arr); Array.Reverse(
-
C#のparams配列を使ってメソッドに可変長の引数を渡す方法
メソッドを宣言するとき、実際にいくつの引数が渡されるのか事前には分からないケースがあります。こうした場面で役立つのが、C#のparams配列(パラメーター配列)です。paramsキーワードを使えば、呼び出し側が任意の個数の引数を渡せる柔軟なメソッドを定義できます。paramsキーワードの基本的な書き方paramsキーワードは、以下のように配列型の仮引数の前に記述します。public int AddElements(params int[] arr) { }このように宣言されたメソッドは、int型の値をいくつでもカンマ区切りで受け取ることができます。サンプルコード次の例では、params配列を使