第22講 並び替えの方法その2 
第1話 最大値排除繰り返し法の考え方 
最大値排除繰り返し法とは、
データの中の最大値を見つけ、
先頭にもってきて検索対象から外して、
再び最大値探しだし、
現在のデータの中の先頭にもってくるということを繰り返す方法です。

データ
4,9,3,8,10
を例に説明しましょう。
まずこの5つのデータの最大値を探します。
4,9,3,8,10
10が最大値です。
これを先頭にもってきます。
10,4,9,3,8
次に、
104,9,3,8
10を除いた4つを検索対象にします。
4つの最大値を探します。
9です。
104,,3,8
9を4つの先頭にもってきます。
10,4,3,8
9を除いた3つを検索対象にして
10
9,4,3,8
そこから最大値を探します。
8が最大値です。
10,9,4,3,
これを3つの先頭にもってきます。
10,9,
4,3
次に残りの二つを検索対象にします。
10
,9,
4,3
最大値は
10,9,8,,3
最大値は4です。
二つの先頭にもってきて
10,9,8,4,3
並び替え成功です。

では最大値はどのように検索したらよいでしょうか。
int max=-1;
などとデータ軍の中で最も小さいと考えられる値を最大値として用意します。
そして、検索対象軍のデータと比較してもしデータの方が大きければ、
maxに代入し直します。
それを繰り返していけば、最終的に最大値が確定できます。
具体的にトレースしてみましょう。
4,9,3,8,10
maxと4を比較します。
maxは-1に初期化されていますから、
4の方が大きいわけです。
max=4を実行します。
次に9と比較します。
4より大きいので
max=9が実行されます。
次に、3と比較します。
3の方が大きくないので何もしません。
つまり、maxは9のままです。
次に、8と比較します。
やはり、8の方が大きくはありませんので、
何もしないで、maxは9のままです。
最後に、10と比較して10の方が大きいので
max=10
が実行され、最大値10が見いだされるわけです。


さて、皆さん以上のヒントを参考に最大値排除繰り返し法による並び替えプログラムを考えましょう。
当然、2次元ループになります。
問題は、最大値をいかにして先頭にもってくるかと、
次のループのときにいかにしてそれを検索対象から外すかです。


第21講第7話へ 第2話へ

戻る

C言語 C++講義第1部へ
C言語 C++講義第2部へ
VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)