C#で非静的メソッドを使って1次元配列を昇順にソートする方法
C#において、static(静的)メソッドではなく、インスタンスメソッド(非静的メソッド)を使って1次元配列を昇順に並べ替える方法を解説します。ここでは、選択ソートの考え方に基づいた二重ループ(ネストされたforループ)を実装し、配列を受け取るメソッドとして定義します。
手順1:ソート前の配列を用意する
まず、並べ替え対象となる未ソートの配列を定義します。
int[] list = {87, 45, 56, 22, 84, 65};手順2:二重ループで並べ替えを行う
次に、メソッドに渡された配列を並べ替えるため、外側と内側の2つの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] + " ");
}サンプルコード(完全版)
以下は、非静的メソッドを使用して1次元配列を昇順に並べ替えるプログラムの完全なコードです。Mainメソッド内でクラスのインスタンスを生成し、そのインスタンス経由でsortFuncメソッドを呼び出している点がポイントです。
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 22 45 56 65 84 87
解説のポイント
- 非静的メソッドの呼び出し方: staticメソッドとは異なり、非静的メソッドはクラスのインスタンスを生成してから呼び出す必要があります。上記コードでは
MyApplication m = new MyApplication();のようにインスタンス化し、m.sortFunc(list)として呼び出しています。 - ソートの仕組み: 外側のループで基準位置を固定し、内側のループでそれ以降の要素と比較。条件
arr[i]>=arr[j]が成立した場合に一時変数tempを使って値を交換することで、小さい値から順に左へ配置していきます。 - 計算量: この手法は単純な比較ソートのため、計算量はO(n²)です。要素数が多い場合はArray.Sort()などの組み込みメソッドの利用も検討するとよいでしょう。
-
C#のparams配列を使ってメソッドに可変長の引数を渡す方法
メソッドを宣言するとき、実際にいくつの引数が渡されるのか事前には分からないケースがあります。こうした場面で役立つのが、C#のparams配列(パラメーター配列)です。paramsキーワードを使えば、呼び出し側が任意の個数の引数を渡せる柔軟なメソッドを定義できます。paramsキーワードの基本的な書き方paramsキーワードは、以下のように配列型の仮引数の前に記述します。public int AddElements(params int[] arr) { }このように宣言されたメソッドは、int型の値をいくつでもカンマ区切りで受け取ることができます。サンプルコード次の例では、params配列を使
-
JavaでArrayList(配列リスト)を昇順にソートするプログラムの書き方
この記事では、Javaを使ってArrayList(配列リスト)の要素を昇順にソートする方法を解説します。 リストとは、要素を順番に格納し、先頭から順にアクセスできる「順序付きコレクション」のことです。インデックスを指定して要素を挿入・更新・削除・検索するためのメソッドが用意されており、重複した要素を保持することもできます。 ソートの実行例 まず、今回作成するプログラムの動作イメージを確認しておきましょう。 入力: 入力リスト:[java, coding, is, fun] 出力: ソート後のリスト:[coding, fun, is, java] アルゴリズム 昇順ソートは、java.util.