[ 高橋のページ ] [ プログラミングおよび実習II ]

プログラミングおよび実習II レポート課題

以下の要領で,四つのソート法(単純選択法,バブルソート,ヒープソート,クイックソート)のプログラムの実行時間を計測し,これらの性能を比較しましょう.

プログラム作成に関すること

printdata2.c
関数 PrintData2() を含む
selection.c
関数 SelectionSort() を含む
bubble.c
関数 BubbleSort() を含む
heap.c
関数 HeapSort() 他を含む
quick.c
関数 QuickSort() 他を含む

実験に関すること

実験その一: 交換回数の計測

四つのソート法のプログラムに対して,種を「学籍番号の下5桁(TXYabcdな人は,Yabcd,T00abcdな人は,8abcd)」にして発生させた乱数データ1000個を入力し,それぞれの交換回数を求めてください.

実験その二: 実行時間の計測

データの個数をいろいろ変えながら四つのソート法のプログラムをそれぞれ何回か実行し,以下のようにして実行時間を計測してください.

例えば,乱数データの生成用プログラムの実行形式がrandom,バブルソートのプログラムの実行形式がbubbleだった場合,

$ ./random | (time ./bubble )

と実行して,種とデータ個数を入力すれば,bubbleの出力の後に

real    0m2.462s     ← 実際の経過時間 0分2.462秒
user    0m0.603s     ← そのうち,このプログラムの実行に使った時間    
sys     0m0.002s     ← このプログラムの実行のためにOSなどが使った時間

というような出力がされます.このレポート課題では,「"user"の時間 = ソートプログラムの実行に要した時間」と考えて,この値を記録していってもらえれば結構です.

以下のことに気をつけましょう

実験その三: 自由研究(ボーナス課題)

余裕があったら自分なりにいろいろ研究してみてください.レポートの点数にボーナス点を追加することがあります.

例えば,アルゴリズムやプログラムに工夫を加えたものでも実験して比較する,実験データを変えてみる,などなど. アイデアをいくつかあげてみると…

考察やレポート作成に関すること

グラフ

横軸にデータ個数,縦軸に実行時間をとって,グラフを描きましょう.四つのソート法を比較したいので,全部ひとつのグラフに描きたいところですが,あまりに値が違いすぎて困るかもしれません(両対数目盛なら全部一緒にかけますが…).せめて,単純選択法とバブル,ヒープとクイックのそれぞれのペアについて一緒にグラフを描きましょう.

グラフを描く際は,以下のどれでもよいです.

考察

どのソート法が速いのか,データ個数と実行時間の間にはどんな関係があるのか,それはなぜか,など

レポートに書くべきこと

数字やグラフなどの結果を羅列しただけのものは受け取りません.きちんと文章で記述してください.

提出に関すること


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2014-08-13 (水) 13:45:19