2008年8月4日月曜日

【C算法】第6章 ソート (その2)

ちょっと焦っているのが、よくないと思えてきた。焦ってやったことは、後々役に立つようにはならない。自分に力量が無いから、思うように進まず、焦るのだ。そして、焦ってしびれをきらして、無理して速く進んだとしても、それは身の丈にあっていないわけで、力量不相応なことをしており、力量が無いことのなんの解決行為にもなっていない。力量の無さを受け止めた上で、こつこつやるしかないのだ。

  • 「6-3 単純選択ソート」から。
  • 離れた場所の要素を交換すると安定性が崩れるようだ。
  • 「6-4 単純挿入ソート」。シャトルソート! なんだかかっこいいかんじ。
  • 単純ってstraightの訳なのね。
  • そういやトランプって最近やってないなぁ。こんどやってみよう。
  • これはデータ構造として、配列ではなくて線形リストとかに向いたアルゴリズムじゃないかなぁ。
  • 演習6-7のbinary insertion sortの実装にやたら時間がかかる。再帰を使えばすぐにかけるのです。せっかくCなので、再帰を使わないで、配列と繰返しでやろうとすると、途端に、値の振舞と添字の振舞がいろんなケースでどうなるのか、ということが追えなくなるのです。やっぱり、数学に弱い、とくに離散数学に弱いのが原因だと思う。
    さて、ここで開きなおります。C上で直接アルゴリズムを考えるのではなく、離散数学の問題の解答として再帰的表現をなるべく使わないものを立案してから、それをCで実装することにする。
  • ふむ。そのようにやったら、デバッグなしで一発で正しく書けた。しかしながら、その結果としてのCによる実装のあり様はある意味きたないというか、それが正しく動くものかどうか、ぱっと見で判断できないようなものだ。これは何を意味しているのか。
    CLとかSchemeのときは、再帰とか高階関数とかマクロとかをつかいながら、アルゴリズムを考える過程としてそれを書き進めることができるが、Cではそうやってはいけないまたはできないということかもしれない。アルゴリズムを考えてから、それのCによる実装を考えるという二段階を踏むべきということか。単なる慣れの問題かなぁ。

こつ、こつ。

0 件のコメント: