<<
Squeakで学ぶプログラミング(初版)
/
アルゴリズムの組み立て
/
並び替えをしてみよう
/並び替えアルゴリズム
>>
10.2 並び替えアルゴリズム
M先生
では,コンピュータに 並び替え させるためのアルゴリズムを考えてみよう.いきなり,プログラムで考えるのは難しいから,まずは日本語で考えてみるよ.
Aさん
わかりました.
M先生
並び替えをするアルゴリズムはいろいろあるのだけど,タイルを使ってできる一番簡単なものを説明するね.
一つ目の棒と二つ目の棒の長さを比べる
一つ目の棒の方が長かったら,そのまま
二つ目の棒の方が長かったら,二つ目の棒を入れ物の先頭に入れなおす
棒を一つ一つずらしながら,1〜3を繰り返す.
M先生
じゃあ,とりあえず,このアルゴリズムを使って手動でやってごらん.
Aさん
うーんと,これだと,背の高い順に並びますね.
M先生
その通り.では,さっそくこれを実装してみよう.
Aさん
まず,カーソル位置を増やして,繰り返してといういつものプログラムは必要ですね.
M先生
そうだね.そうしたら,次にやりたいことは?
Aさん
一つ目と二つ目の棒の長さを比べたいのですが
M先生
でも,いままでの方法だと今あるカーソル位置の四角形しか長さを調べることができないね.
Aさん
変数を使って長さを保存しておいて,カーソルを進めたらどうでしょうか?
M先生
いいね,じゃあ,次はテストの質問だね.
Aさん
こうなります.
M先生
よろしい.では,最後に質問が「はい」の場合「先頭に追加する」というタイルを入れればよいね.
Aさん
こうですね.
Aさん
ところで,削除しなくていいのですか?
M先生
「先頭に追加する」という命令は,もし既にどこかに追加されていたら自動的に削除してくれるのだよ.
Aさん
便利ですね.あ,動いた.なんか一生懸命やってるなあ.
M先生
アルゴリズムさえ作れれば,人間がやるとめんどくさい作業でもコンピュータに仕事をさせることができるんだよ.
Aさん
そうですね.でも,自分でアルゴリズムを考えるのが難しそうです.今回は教えてもらいましたから.
M先生
練習すれば誰でもできるようになるよ.あとは,いろいろなアルゴリズムを見て勉強することが大事だね.
Aさん
がんばります.
<<
Squeakで学ぶプログラミング(初版)
/
アルゴリズムの組み立て
/
並び替えをしてみよう
/並び替えアルゴリズム
>>