目次> 第13章> 13.1 | TOPUPPREVNEXT |
これまで学習してきたことを組み合わせると、
配列内のデータの整列ができます。
整数型の配列 vdata の先頭からデータが格納されていて、
データの個数は整数型の変数 num に入っているとします。整列した結果も同じ
vdata に格納することにしましょう。
しつこく言いますが、vdata[0]
から vdata[num-1] にデータが入っています。
上記の手順の 1. 2. 5. 6. の部分で、for文が構成されます。
手順3は、
手順4もちょっとした工夫がいります。変数に新しい値を代入した瞬間に
旧いデータは消えてしまいますから、旧い値をちょっとだけ憶えておく
temparea という変数を定義します。
あとは、これらをドーンと組み合わせて書くだけです。
すなわち、 vdata の sfrom 番目から、 num−1 番目までの
データが、まだ整列されていないとする。
いままでは、「最小の値」を探したが、今回は最小の値が格納されている
場所を憶えておく。
そうでなければ、上記の手順 3.から繰り返す
for ( int sfrom=0; sfrom<num; sfrom++ ) {
手順 3.
手順 4.
}
という手順になります。プログラムにすると、次のようになります。
int minindex = sfrom;
for ( int i=sfrom+1; i<num; i++ ) {
if( vdata[i] < vdata[minindex] ) minindex = i;
}
int temparea = vdata[minindex];
vdata[minindex] = vdata[sfrom];
vdata[sfrom] = temparea;
次節へ。
更新日:2004-12-18 | TOPUPPREVNEXT |