コンパクトなプログラム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 Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

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

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