TPY ENGINEERING VLOG

TPY ENGINEERING VLOG(C,JAVA)

*C言語* 〜21時限目〜 配列の内容をソートする・・・

〜目次〜

 

 

配列の内容をソートする

これまでの知識を使って、

配列を応用するコードを記述してみます。

配列を使って、テストの点数を並べてかえてみることにします。

値を並べ替えることを、

ソート(sort)

と呼んでいます。

配列は要素に複数の値を格納することができるので、

並べ替えをするコードを利用すると便利になるのです。

以下のコードを記述してみてください。

sample47.c

f:id:YuyaTerayama:20180907235854p:plainーsample47の実行画面ー

5人の点数を入力してください。

99

70

35

77

13

1番目の人の点数は99です。

2番目の人の点数は77です。

3番目の人の点数は70です。

4番目の人の点数は35です。

5番目の人の点数は13です。

このコードでは実行画面をみるとわかる通り、

点数が高い順に並べ替わっています。

配列をソートするには色々な方法がありますが、

今回は以下の手順で行なっています。

1.まず最初に、配列の各要素を配列の先頭の要素(test[0])と比較します。

 比較した要素の方が大きい場合は、先頭要素と入れ替えます。

 すると、配列の先頭の要素に最大値を格納できます。

2.これで一番大きな値である配列の先頭要素が決まりました。

 そこで、残りの要素についても同じ処理を繰り返します。

 つまり、残りの要素を配列の2番目の要素と比較して、

 大きい場合に入れ替えます。

 すると、2番目に大きい数値が2番目の要素となります。

3.上記を順に繰り返すことでソートの完了です。

要素を入れ替えるためには、

入れ替えるものと同じ型の作業用のエリア(変数)

が必要になります。

今回の場合には作業用の変数tmpを使っています。

 

多次元配列の仕組みについて

配列の応用を学んでいきます。

今までの配列は一列に並んだ箱のようなイメージでした。

さらに配列は、二次元以上に並んだイメージである、

多次元配列

として指定することもできるのです。

二次元配列であれば、

エクセルのようなものをイメージできます。

三次元配列であれば、

立体をイメージできます。

多次元配列の宣言は以下の通りです。

型名 配列名[要素数]  [要素数];

簡単な例として、

「数学」と「国語」という2つの科目の点数を、

整理するプログラムを記述します。

二次元配列を使ったプログラムを以下に記述します。

sample48.c

f:id:YuyaTerayama:20180908001608p:plain

ーsample48の実行画面ー

1番目の人の数学:99点,国語:87点です。

2番目の人の数学:77点,国語:12点です。

3番目の人の数学:65点,国語:24点です。

4番目の人の数学:34点,国語:45点です。

5番目の人の数学:55点,国語:100点です。

二次元以上の配列への値の代入や出力についても、

基本的には同じです。

添字を指定して、

値を代入、出力します。

配列の初期化についても、

以下のようにして行います。

int test[ ] [5] = {......}, {......};

最初の配列の要素数については、

一次元配列と同じように省略することができます。

C言語の内部的には、

一次元配列の各要素がさらに配列として扱われているので、

このようなことができるのです。

 

次回では文字列と配列の関係についてやっていきます。

〜END〜