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