一週間で身につくC# の勉強中15

prob8-13

長さ10の整数の配列を作成し、各々の中に1から100までの乱数を代入し、その数を大きい順番に並べ替えて表示しなさい。なお、並べ替えの方法としては、以下の方法を用いなさい。

① 配列の中から、最大の数を探し出す。 ② ①で見つけた数と、配列の最初の数を入れ替える。 ③ 次に、配列の2番目から最後の中でもっとも大きな数を見つけ出す。 ④ ③で見つけた数と、先頭に持ってきた数

考え方のポイント
  • 配列の何番目の数字が一番大きかったかを変数に入れて後で数字を入れ替える
  • 配列の1番目の数字を入れ替えたら、次は2番目から10番目を調べるのでここではint j=0ではなくint j=iにする(iは数字を入れ替えるための配列番号で jは大きい数字を探すための配列番号)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace prob8_13__2
{
    class Program
    {
        static void Main(string[] args)
        {
            int []hi = new int[10];
            Random r = new Random();
            for(int i= 0; i < 10; i++) //ランダムな数字を10個配列に入れる
            {
                hi[i] = r.Next(1, 101);
                Console.Write("{0} ", hi[i]);
            }
            Console.WriteLine();
            int dai = 0;
            int cnt = 0;
            int mae = 0;
            for(int i = 0; i < 10; i++) //配列の0から9まで
            {
                for(int j = i; j < 10; j++) //配列の中の数字を配列iから9まで
                {
                    if (hi[j] > dai)
                    {
                        dai = hi[j];
                        cnt = j; //配列の何番目
                    }
                }
                hi[cnt] = hi[i];
                hi[i] = dai;
                mae = hi[i];
                dai = 0;

            }
            foreach(int i in hi){
                Console.Write("{0} ", i);
            }
        }
    }
}