配列を渡してソートする

1 2 3 5 7 8

C# のメソッド(method)にパラメータとして配列を渡してソートします。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. C# でも C++ と同じように配列をパラメータとして渡すことが出来ます。
    ただし C++ のように配列の先頭アドレスが渡されるのでは無く 「配列 Object のポインタ」 が渡されます。
    配列を渡されたメソッドでは、格納されているデータをソートして返します。
    C++ に比べてパラメータの書き方が少し違うだけで、同じようにプログラム出来ます。
  2. Main() メソッドも sort() メソッドも Static で宣言して下さい。
    ソースコードです。
    /**********************************************/
    /*★ C# Sort  Function Program    前田 稔 ★*/
    /**********************************************/
    using System;
    
    class Prog
    {
        public static void Main()
        {
            int[]   tbl = new int[4]{5,1,7,3};
            sort(tbl,4);
            Console.WriteLine("{0} {1} {2} {3}", tbl[0], tbl[1], tbl[2], tbl[3]);
            Console.ReadLine();
        }
    
        static void sort(int[] t, int n)
        {
            int     i,j,wk;
            for(i=0; i<n-1; i++)
                for(j=i+1; j<n; j++)
                {
                    if (t[i] > t[j])
                    {   wk=t[i];    t[i]=t[j];  t[j]=wk; }
                }
        }
    }
    
  3. Static メソッドばかり紹介してきましたが、Static で無いメソッド(Automatic)の方が一般的です。
    Automatic メソッドの説明は C# Object Class などを参照して下さい。

【演習】

  1. 標準的な方法 0(^_^)0 でソートしていますが、隣接ソートなど別の方法でソートしてみて下さい。
  2. 配列に初期値を設定するときは、new を省略して書くこともできます。
    int[] tbl = {5,1,7,3,8,2};
  3. C# では配列の大きさを取得するメソッドが用意されています。
    GetLength(0) の0は配列の次元で、今回のような一次元配列のときは0を指定します。
    tbl.GetLength(0)
  4. 配列の先頭アドレスでは無く、配列 Object のポインタが渡されると言いましたね。
    と言うことは配列の大きさ n を渡す必要はありません。 (?_?;
    sort メソッドを次のように変えてプログラムして下さい。
    static void sort(int[] tbl)
  5. ヒントです。
    for(int i=0; i<tbl.GetLength(0); i++)

超初心者のプログラム入門(C# Frame Work)