PR

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

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

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

 「第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

Think IT会員サービスのご案内

Think ITでは、より付加価値の高いコンテンツを会員サービスとして提供しています。会員登録を済ませてThink ITのWebサイトにログインすることでさまざまな限定特典を入手できるようになります。

Think IT会員サービスのご案内

関連記事