- 締切済み
クイックソートで並べ替え
友人から情報処理の質問を受けました。ですが、私では良く分からなかったので質問します。 2,4,8,1,6,5,2,7,3,7の整数をクイックソートで並べ替えよ。 また、比較回数を示せ(軸要素は先頭の2要素のうち大きいほうとせよ)。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- buriburi3
- ベストアンサー率44% (353/792)
この場所では「課題の丸投げ」は禁止されているので解答に自信が無いなら、その解答を示して正否を問うのがルールです。 その友人の解答をここに提示してください。
- yama5140
- ベストアンサー率54% (136/250)
No.3 です。 >私含めて本人もソースだとかプログラムが一切分かりません。 >手順自体は、検索したようで理解しているらしいのですが、回答に自信がないらしく正解を知りたいとのことです。 「C&C++でプログラムし、結果(比較回数)を回答しろ」、ということですね。 でしたらこのコミュニティーには相応しくないのでは・・。 ☆アンケート形式にしちゃえば、ぎりぎりセーフかも。 昇順にソートしたとき、比較○回に1票。 降順にソートしたとき、比較◇回に1票・・とか。 >軸要素は先頭の2要素のうち大きいほうとせよ って、対象が、2,4,8,1,6,5,2,7,3,7 となっていることから自明ですよね。 (「先頭」は1つしかないっつうツッコミは無しとして) ☆「軸要素は4とせよ」という記述ではないことから、やはり(様々な条件に対応可能な)プログラムを作る、のが「そもそも」ではないでしょうか。 +++++++++++++++++++++++++++++++++++++ アンケート形式として、年寄りは、 昇順にソートしたとき、比較 15 回に1票。 降順にソートしたとき、比較 16 回に1票。 注:全然自信がありません(まっアンケートだから、「良」として下さい)。 「バブル」なら 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 で固定かなぁ・・?。
- yama5140
- ベストアンサー率54% (136/250)
>2,4,8,1,6,5,2,7,3,7の整数をクイックソートで並べ替えよ。 http://okwave.jp/qa4557292.html この質問文中のソースに、「比較回数」処理を追加し、試されたら如何でしょう。
補足
私含めて本人もソースだとかプログラムが一切分かりません。 手順自体は、検索したようで理解しているらしいのですが、回答に自信がないらしく正解を知りたいとのことです。 もし拝見されたら分かる限りで教えてくださるとありがたいです。 よろしくお願いします。
- jacta
- ベストアンサー率26% (845/3158)
qsortにせよ、std::sortにせよ、アルゴリズムとしてクイックソートが使われていることは保証されていません。 また、仮にクイックソートで実装されていたとしても、 > 軸要素は先頭の2要素のうち大きいほうとせよ という要件を満たすことができません。 #1の回答のとおり、検索すればすぐに結果が得られますので、その旨お伝えください。
補足
先の補足とダブりますが、手順自体は検索したようで理解しているらしいのです。ただ、回答に自信がないらしく正解を知りたいとのことです。 もし拝見されたら分かる限りで教えてくださるとありがたいです。 よろしくお願いします。
- buriburi3
- ベストアンサー率44% (353/792)
コールバックを定義してqsort()呼び出すだけです。 参考 http://wiki.livedoor.jp/cafeboy1/d/C/C%2B%2B%20qsort(QuickSort) C++ならSTLが使えます。 (コンパイラによってはSTLがまともに使えない事もありますが) 課題か何かでクイックソートルーチン自体を作らなければならないのでたら「ググれカス」とお伝えください。
補足
伝えたところ、C++って何?という返答が返ってきました。 本人曰く、上記の問題はプログラムなどを使うのではなく、あくまで手動での筆記問題とのことです。 手順自体は、検索したようで理解しているらしいのですが、回答に自身がないらしく正解を知りたいとのことです。 もし拝見されたら分かる限りで教えてくださるとありがたいです。 よろしくお願いします。
お礼
返信ありがとうございます。 本人は回答よりも筋道を知りたかったようですが、自己解決したらしいのでこれにて〆ます。 何度もありがとうございました。