C/C++の宿題を片付けます 77代目
■ このスレッドは過去ログ倉庫に格納されています
0796デフォルトの名無しさん
2006/12/01(金) 18:53:51[2] 問題文:
以下の要求(1)〜(6)を満たすクイックソートのプログラムを実現しなさい.
(1)軸要素の選び方については,以下の3方法が利用できるようにすること.
(a) ランダムに一つを選ぶ. (b) データの先頭,最後,真中の位置の3要素の中央値を選ぶ.
(c) データの先頭から見て最初に得られた2つの異なる値の大きいほうをとる.
(2)軸要素で分割した部分配列のサイズ(要素数)が小さくなった場合には, 基本的なソート方法を用いて並び替えること.
(3)プログラム終了時にデータ総数と比較回数を表示すること. また,分割の回数および基本的ソート方法が用いられた回数も表示すること.
いずれも「分かりやすく」表示するように工夫すること.
(5)プログラム実行は,次のような引数付きで行えること.
(ここでは,プログラムファイル名をquick81.cとし,
これをコンパイルしてquick81という実行形式ファイルを作成したとする.)
% quick81 inputfile outputfile pivot_selection basic_sort small_number debug_mode
inputfile : ソートするデータが入ったファイルの名前. outputfile : ソート後のデータを出力するファイルの名前
pivot_selection : a,b,c のいずれかの文字で上の軸要素の選び方に対応する.
basic_sort : b,s,i のいずれかの文字.それぞれ,バブル,選択,挿入ソートに
相当する.分割した部分配列のサイズが小さくなった場合に用いるソート方法を設定する.
small_number : 正の整数.この数字より部分配列のサイズが小さくなったら,上で指定した基本的なソート方法を用いる.
debug_mode : vあるいはnの文字。vの場合は,データの分割の仕方が分かりやすいように、軸要素とそれにより分割された部分配列のサイズを
逐次出力させるようにすること. n の場合は上の出力はしない.
[3] 環境
[3.1] OS:Linux
[3.2] コンパイラ名とバージョン:gcc
[3.3] 言語:C
[4] 期限:12月3日
■ このスレッドは過去ログ倉庫に格納されています