- 159 名前:デフォルトの名無しさん mailto:sage [2007/09/24(月) 10:02:55 ]
- >>157
比較関数が間違ってる。文字列の第一文字目だけで比較するそうな。 >>158 157じゃないけど 1. sort_array[0] が NULL かどうかを見てるのは再帰の一発目だけを 区別する目的だろうけれど、そんなのは再帰中にやらず、157 のように 別の関数に分けるべき。これが落ちる原因になっている。 2. それを直しても正しく動作しない。last の前後に分けるところがダメ。 pivot を特別扱いしたいのだろうけど、並べ替え中に pivot も動いてしまう。 ここは 157 のように、両側から同時にやるのが常套テクニック。 今の方法でも、pivot を必ず最後に選ぶようにすると、一応できる。 1 を小細工で対応し、2 を適当に修正したものを以下に示す。 実際の修正量は数行程度のはずだけれど、相当不自然なコードなので もう一度自分で考えて書いたほうが勉強になると思う。
|

|