直感的にわかるソートの方法は?

2008年5月9日(金)
須藤 克彦

プログラムを実行してみよう

 書き方はほかにもあるでしょうが、ひとまずこれを動かしてみましょう。

 この「bubble_sort()」をテストするために、「第1回:アルゴリズムからプログラムを学ぼう!(http://www.thinkit.co.jp/article/62/1/2.html)」の2ページ目で作ったテストプログラムにこの関数を埋め込みます。

 覚えていますか?中身が空っぽだったbubble_sort()を作りましたが、図2のプログラムbubble_sort2.phpのように、その中身を今回作ったもので埋めるわけです(include でファイルを取り込んでも構いませんが、実際のテストの方法は工夫してください)。

 そしてこのプログラムを実行した結果が図2の実行結果になります。

直感的に理解できるか、問い直す

 さてここまではうまくいきました。前回バブルソートの手順を説明しましたが、その通りに作ったという点に注意してください。プログラムははじめに方法を考えて、それを「その通り」に作ることが大切です。

 ところでこの方式はこれで良いのですが、皆さんはこのプログラムを見てどう思いましたか?

 実は、筆者がこのバブルソートを初めて知ったとき、「うまいことやるなぁ」と感心した反面、とても技巧的に思いました。「プログラムとはこういうものか」とあきらめましたが、私にはこの方法が直感的には理解できませんでした。なぜ、この方法でうまくいくのか?

 そもそも、人がものを並び替えるとき、こうはしませんよね?

 そこで、次に別のアプローチを考えてみます。

神戸情報大学院大学
1980年立命館大学理工学部卒、独立系ソフトハウスに入社。CやFORTRANコンパイラなどの言語処理系の設計・開発に約10年間従事。その後ユーザ系企業でUNIXによるクライアントサーバシステムの設計・開発を主導。同時に企業の内外で人材育成に注力する。現在は神戸情報大学院大学で講師として教鞭(きょうべん)をとる。「ソフトウエア工学の基礎を勉強してオールラウンドプレーヤーを目指せ」が技術者育成についての口癖。http://www.kic.ac.jp/professors/sudo/index.html

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています