10.3 アルゴリズムの高速化
-
Aさん
-
自動で並び替えをやってくれるのはうれしいけれど,このプログラム時間がかかりますねぇ.
-
M先生
-
そうだね.並び替えっていうのは,コンピュータができる仕事のうちでも,時間がかかる仕事といわれている.でも,問題はアルゴリズムにもあるんだ.この並び替えプログラム高速化する方法を教えてあげようか.
-
Aさん
-
でないと,日が暮れてしまいます.
-
M先生
-
よろしい.では,繰り返し実行ではなく,一回一回実行して,一回ごとにプログラムを見ていこう.
-
Aさん
-
わかりました.
-
M先生
-
今のプログラムだと,先頭に追加したときに
カーソル位置
が1に戻ってしまっていることが分かる?
-
Aさん
-
あ,ほんとだ.なんでですかね?
-
M先生
-
これはSqueakの入れ物を作った人が,カーソルが戻った方が便利だと考えたからそうなるんだろうね.
-
Aさん
-
今回の場合は単なるおせっかいですね.
-
M先生
-
そうだね.カーソル位置が戻ってしまうと,なかなか最後までいかないから,プログラムが遅くなってしまっている.だからこうしてカーソル位置を変数で記憶しておいて..
-
M先生
-
で,追加した後,カーソルを戻してやればよい.
-
Aさん
-
あ,すごく速くなった!今度は一瞬で終わります.
-
M先生
-
そう.アルゴリズムには速いものや遅いものがあるんだ.これをアルゴリズムの「
効率
」という.同じ仕事でも,効率が良いアルゴリズムを使うと一瞬で終わるものが,効率の悪いアルゴリズムでは,地球が始まってから今まで計算しても終わらないぐらいの差が出ることもあるんだ.
-
Aさん
-
げげ.効率って大事なんですね.
練習問題10.1
日常行っている仕事のアルゴリズムを記述してみよう.