- ベストアンサー
クイックソートで・・・
C言語で再帰を利用してクイックソートを書いたのですが、データ数が大きくなるとプログラムが途中で終了してしまいます。これってスタック領域がなくなってしまったからでしょうか?お願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>スタックチェックやスタックサイズの指定は >どのようにするのですか? それは、コンパイラによって異なります。 大抵のコンパイラで cc /? cc -? cc --help cc -h cc などでコンパイラオプションを表示することができます。
その他の回答 (2)
- BLUEPIXY
- ベストアンサー率50% (3003/5914)
回答No.2
多分スタックでしょうね。 コンパイラのスイッチでスタックチェックを付加したり あるいは、スタックサイズを指定できると思うので、 そのように、チェックするか、必要なスタックサイズを確保して下さい。
質問者
お礼
ありがとうございます。 ところでスタックチェックやスタックサイズの指定は どのようにするのですか?
- goma_2000
- ベストアンサー率48% (62/129)
回答No.1
プログラムがあっているとして。 エラーメッセージになんと出たのか判りませんが、多分そうでしょうね。エラーメッセージにスタックオーバーフローのようなメッセージは出てないですか? 他には、データが大きすぎて配列に収まりきらないをいうことも考えられますが、これだとメモリエラーになりセグメンテーションフォルトでおちるかな? クイックソートは末尾再帰で書けるので、ForやWhileのloopに直せば解決するのではないでしょうか。
質問者
お礼
ありがとうございます。試してみます。
お礼
ありがとうございました。