第3回 コンパクトなプログラムvs.直感でわかるプログラム

直感的な方法をプログラミング

 「第2回:直感的にわかるソートの方法は?(/article/62/2/index.html)」では、バブルソートの原理に従ったプログラミング方法を紹介しました。しかしこの方法は、理屈はわかるのですが、筆者には複雑すぎて直感的には理解しにくいものでした。それで別のアプローチを考えました。

 (1)トランプ集まりの中から一番小さいものを取り出す。
 (2)それを別のところに順に並べる。
 (3)(1)(2)を(1)のトランプがなくなるまで繰り返す。

これを「そのまま」プログラムにしてみましょう。図1のような感じでしょうか。

プログラミングのポイントは?

 図1に示したプログラミングの重要なポイントは以下のような「ループの部分」です。

  while( $e = pickup_small( &$arr ) ) {
  array_push( $new_arr, $e );
  }

 言葉で書けば次のようになります。

 (1)配列($arr)から一番小さいものを取り出す。
 (2)取り出すものがなければおしまい。
 (3)取り出したものを新しい配列に付け加える。
 (4)(1)に戻って繰り返す。

 「1枚取り出す」ときに、もちろん1番数字の小さなものを取り出すのですが、それは取り出すときに考えましょう(細かいことは先に延ばすのがミソ!)。

 これで話は単純になりました。あとは一番小さいものを取り出す関数を作るだけです。

著者について

須藤 克彦

神戸情報大学院大学 須藤 克彦

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

この記事を評価する

4.5
平均: 4.5 (投票数: 2)
あなたの評価: なし

IT Leaders 毎月無料でお届けいたします

本誌は、読者登録いただくことにより、毎月無料でみなさまのお手元まで直接お届けいたします(書店などでは販売していません)。

企業の情報システムを担当する方々や事業部門のIT担当の方々、およびIT関連プロフェッショナルの方々を対象に、実践的に役立つ情報を掲載、幅広く業務にご活用いただけます。

IT Leaders新規購読お申し込みはこちらから