第17講 並び替えその=2最大値排除繰り返し法
第1話 最大値排除繰り返し法とは?

ここでも並び替えをテーマとします。
今回は私が、最大値排除繰り返し法と名付けているものです。
どういう方法か説明しましょう。
データの中の最大値を探し出し、
そのデータを一番左にもっていって、対象データ群から外します。
そして、再び対象データ群の中の最大値を探し出し、
対象データ群の一番左にもっていって対象データ群から外します。
これを繰り返していけば降順の並び替えが成功するという方法です。
では具体例で見てみましょう。
2,8,5,1,10
102,8,5,1
10,2,,5,1
10,2,5,1
10,8,2,,1
10,8,2,1
10,8,5,,1
10,8,5,
10,8,5,2,
10,8,5,2,1

最大値の排除を繰り返していってに並び替えを実現する方法を、
私は最大値排除繰り返し法と名付けているのです。

ではデータ群の中から最大値を探し出すにはどうしたらよいでしょうか。
すでに皆さんは、学んでいますね。
int mx;
を用意しておいて、最大値としてはあり得ない値で初期化します。
例えば、mx=0; です。
そして、各データと比較してデータの方が大きい場合はその値をmxに代入します。
これを繰り返せば、最大値を探し出すことができます。

それでは、皆さんランダムデータを発生させて、その中から最大値を探し出すプログラムを考えてください。
基礎
前に作った隣項交換繰り返し法のファイルが皆さんのパソコンのハードディスクに残っているかもしれませんが、
それを見ないで組んでみましょう。
人間は、覚えたことを放置しておくと1週間でほぼ0になってしまうというエビングハウスの研究があります。
短期記憶を生涯記憶にチェンジするには、忘れる前の反復をして1ヶ月間頭の中に留めればよいというのが、
エビングハウスの回答です。
このJava入門も忘れる前の反復ができるように、講義を構成しているつもりですが、
皆さんも是非、意識して記憶法を実践していただきたいと思います。

もっとも効率のよい記憶法は、
覚える→1時間後の反復→1日後の反復→1週間後の反復→2週間後の反復→3週間後の反復→4週間後の反復→半年後の反復
であるという、昨年の読売新聞に教育評論家の方の意見が載っていました。
私も、この方法で生涯記憶に変換できると思っています。
つまり、教育評論家の方と同一見解です。

次のことは、是非肝に銘じていただきたいと思います。
忘れてからの反復は意味がないということです。
極論すると、忘れてからの反復は何も蓄積されず、何十回反復しても記憶に定着しません。
ですが、上記の記憶法なら7回の反復で生涯記憶になり、それ以降は反復を必要としないので効率的な学習ができます。
必ず、忘れる前の反復を心掛けてください。

私が封筒システムと名付けている方法を活用するのも1つの手です。
できるだけ大きな封筒(例えば、A3サイズ)をよういして、その日に学んだプログラミング課題と解答例を封筒に入れます。
そして、封筒に次のように日付を入れます。
2012/08/13であるとすれば、
8/14、8/21、8/28、9/4、9/11
です。封筒をカレンダーの近くにおいておきます。
課題が段々増えていきますので、カレンダーの近くには複数の封筒がおかれるようになります。
毎日、複数の封筒をチェックしてその日の日付のものがあったら、
その封筒からプログラミング課題を取り出します。
何も見ないで、プログラミングしてコンパイル・実行を行います。
うまく、実行できない場合は試行錯誤を繰り返します。
それでも、どうしてもうまくいかない場合は、解答例を取り出してプログラミングを修正します。
このときは、忘れる前の反復に成功していないので、その日の日付に×を入れて
8/14、8/21、8/28、9/4、9/11、9/18
と日付を加えます。
もし、何も見ないでプログラミングに成功したときは、その日付に○とつけます。

この方法を実行すれば非常に効率的にプログラミングの学習ができますよ。
もちろん、プログラミングの学習だけでなく、いろいろな学習に活かせます。
是非とも実践してみてください。



第16講第12話へ 第2話へ

戻る

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

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部