*C言語* 〜21時限目〜 配列の内容をソートする・・・
〜目次〜
配列の内容をソートする
これまでの知識を使って、
配列を応用するコードを記述してみます。
配列を使って、テストの点数を並べてかえてみることにします。
値を並べ替えることを、
ソート(sort)
と呼んでいます。
配列は要素に複数の値を格納することができるので、
並べ替えをするコードを利用すると便利になるのです。
以下のコードを記述してみてください。
sample47.c
ー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
ーsample48の実行画面ー
1番目の人の数学:99点,国語:87点です。
2番目の人の数学:77点,国語:12点です。
3番目の人の数学:65点,国語:24点です。
4番目の人の数学:34点,国語:45点です。
5番目の人の数学:55点,国語:100点です。
二次元以上の配列への値の代入や出力についても、
基本的には同じです。
添字を指定して、
値を代入、出力します。
配列の初期化についても、
以下のようにして行います。
int test[ ] [5] = {......}, {......};
最初の配列の要素数については、
一次元配列と同じように省略することができます。
C言語の内部的には、
一次元配列の各要素がさらに配列として扱われているので、
このようなことができるのです。
次回では文字列と配列の関係についてやっていきます。
〜END〜