• ベストアンサー

クイックソートで・・・

C言語で再帰を利用してクイックソートを書いたのですが、データ数が大きくなるとプログラムが途中で終了してしまいます。これってスタック領域がなくなってしまったからでしょうか?お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

>スタックチェックやスタックサイズの指定は >どのようにするのですか? それは、コンパイラによって異なります。 大抵のコンパイラで cc /? cc -? cc --help cc -h cc などでコンパイラオプションを表示することができます。

inayou
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

多分スタックでしょうね。 コンパイラのスイッチでスタックチェックを付加したり あるいは、スタックサイズを指定できると思うので、 そのように、チェックするか、必要なスタックサイズを確保して下さい。

inayou
質問者

お礼

ありがとうございます。 ところでスタックチェックやスタックサイズの指定は どのようにするのですか?

  • goma_2000
  • ベストアンサー率48% (62/129)
回答No.1

プログラムがあっているとして。 エラーメッセージになんと出たのか判りませんが、多分そうでしょうね。エラーメッセージにスタックオーバーフローのようなメッセージは出てないですか? 他には、データが大きすぎて配列に収まりきらないをいうことも考えられますが、これだとメモリエラーになりセグメンテーションフォルトでおちるかな? クイックソートは末尾再帰で書けるので、ForやWhileのloopに直せば解決するのではないでしょうか。

inayou
質問者

お礼

ありがとうございます。試してみます。

関連するQ&A

専門家に質問してみよう