• 締切済み

困っています

C言語を勉強しているのですが、100の乱数データを用意し、昇順に並べて、ソートにかかる時間を表示して10秒以内で処理できるデータを表示をするにはどうすればよいのですが? 特にソートにかかる時間と10秒以内で処理できるデータを表示をするのが分かりません。教えてください。宜しくお願いします。

みんなの回答

  • tea_sheep
  • ベストアンサー率53% (8/15)
回答No.2

問題の意図が明確ではないです。次のどれなのか(もしくは別の意図なのか)が不明。 ・要素数が100個のデータをソートする時間を計測?  (100個程度なら一瞬で終わると思いますが) ・10秒以内に終わらなければ中断? ・データのセット(集合)が100通りあって、すべての場合に対して時間を計測し、  10秒以内に処理完了したものだけを表示? Windows APIを使っていいのかどうか不明なので、とりあえずC標準関数の clock() あたりを使っておくのが妥当ではないかと思います。

すると、全ての回答が全文表示されます。
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★『GetTickCount』関数で簡単に計測できます。精度はイマイチだが。 ・下に簡単な擬似コードを載せます。 サンプル: DWORD dwStart; DWORD dwFinish; dwStart = GetTickCount(); ソート処理 dwFinish = GetTickCount(); if ( (dwFinish - dwStart) < 10000 ){ ←10'000ミリ秒  10秒以内でソートされたデータを表示 } 解説: (1)ソート処理の開始時間を取得して『dwStart』に保存。 (2)ソート処理をする。→qsort など (3)ソート処理の終了時間を取得して『dwFinish』に保存。 (4)『dwFinish』から『dwStart』を引くとソート処理にかかった時間(ms)が計算できます。  このミリ秒が『10'000』=『10秒』以内のデータを表示させれば良いのです。  表示する内容がソート前のデータならば、ソート前のデータをソート用データにコピーして  コピーしたデータをソート処理します。そして、表示はソート前のデータを表示すれば良い。 ・以上。おわり。

参考URL:
http://nienie.com/~masapico/api_GetTickCount.html
すると、全ての回答が全文表示されます。

関連するQ&A