• 締切済み

困っています

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

  • ソートアルゴリズム

    お忙しいところすいません。 先日授業で出された課題がどうしても分からなかったので教えていただきたいと思っています。 どうやってプログラムを作ればよいでしょうか。 問題は、 『N件の乱数データを用意し、昇順(または降順)に並べる。 データ件数、ソート所用時間を表示する。 ソート時間1~100秒で処理できるデータ件数を確認する。 ソートアルゴリズムは2種以上作成すること。』 です。

  • 完全な乱数を生成する方法

    C言語で乱数を生成するときに、今まで srand(time(NULL)); を使用していたのですが、それだと1秒以内に複数の処理を行った際に、 同一の乱数が生成されてしまいます。 時間にとらわれずに完全にランダムな数字を出現させるにはどのような方法を取るのが簡単なのでしょうか? よろしくお願いします。

  • ソートに関する質問です

    C言語でのプログラム作成の課題が解けなくて困っています。 バブルソートを使って、1000000個の整数データを昇順に並べ替えるプログラムを作成するというものです。 自分なりに作成したプログラムは、mallocでデータを格納する動的領域を確保して、後はシンプルにバブルソートの処理を行っています。 データ数が5,6万程度なら正常な動作が確認できるのですが、それより大量のデータ数だと、処理に時間が掛かりすぎるせいか、もしくは処理しきれずに動かなくなってしまったのか分かりませんが、プログラムの処理がいつまでたっても終わりません。 おそらくバブルソートの2重ループのあたりで、膨大な処理になってしまうのだと思うのですが、この問題についての改善策をどなたかご教授いただけませんでしょうか。

  • C言語

    今、独学でC言語を勉強しているんですが。 大きく、 条件処理、繰り返し処理、配列、関数、2次元配列、文字列、構造体、ファイル処理、乱数、検索、バブル・ソート、ポインタ まではやったんですが(参考書で勉強)。 その次になにを勉強したらよく分からないので、 何を勉強するべきか教えてください。 将来的にこれっと言った作りたいものは決めていません。 お願いします。

  • C言語でゲーム

    今、独学でC言語を勉強しているんですが。 大きく、 条件処理、繰り返し処理、配列、関数、2次元配列、文字列、構造体、ファイル処理、乱数、検索、バブル・ソート、ポインタ を勉強したんですが。 もしも、ゲームを作るとしたら・・ もし、ボンバーマンみたいなのを作るとなるとどういう勉強をすればいいんでしょうか? もうひとつはHALOみたいなxbox関係などはどの様な勉強をすればいいんでしょうか? 質問が多いですが、よろしくお願いします。

  • C言語のCSV形式からのソート

    C言語初心者です。 C言語でCSV形式のテキストファイルを読み込み そのファイルの内容(数値)を昇順にソートして表示するプログラムを作りたいのですが中々上手く行きません・・・。 調べても分からず困っています。 どなたか教えていただけませんか?

  • C言語でcsvファイル入出力に関する質問です。

    data.csvオープン、data.csvのデータを読み込んで、a>b>cの優先順位で昇順にソートし、result.csvに書き込み、result.csvクローズです。 手順自体はわかっていますが、なにせC言語の初心者なので、ネットでソースコード見てもちんぷんかんぷんです。ソートも一次配列だけなら自力でできるが、優先順にソートするプログラムはどう書いたらよいでしょうか? ご教授お願いします。 C言語の初心者です、助けてください。 以下が例です:

  • 数字文字列のソート方法

    文字列に数字を含むデータのソートを行うプログラムを C言語で作成したいのですが、どうすれば良いでしょうか? 具体的に言うと、a12、a2、a10という順序で並んでいる データを昇順にソートした場合にa10、a12,a2というように ソートせず、ちゃんとa2,a10,a12とソートされるように したいのですが、簡単にできるものでしょうか? 質問がわかりにくいかもしれないのですが、どうかご回答をお願いします。

  • バブルソートを入れたいのですが

    こんにちは、Perlを始めたばかりの初心者です。 さっそく質問の方失礼します。 乱数1~100までの数字のうち20個をとりだし配列にいれ、数字を昇順に入れ替えして昇順前と昇順後の数字を表示する問題なのですが。 @a[100]=(1..100); srand(time()); for($i=0 ; $i<20 ; $i++){ $a=int(rand(@a)); print"$a\n"; } と上記の乱数20個を取り出すことができたのですが、 そのあとの昇順させようとしてバブルソートを利用したいのですが、どのように組み込めばいいかわかりません。 どのように組み込めばいいのでしょうか? お答えの方ヨロシクお願いします。

    • ベストアンサー
    • Perl
  • 構造体のソートの記述について

     C言語で自己参照構造体(beforeとnextで繋げてます)で名簿をつくり、年齢で昇順ソートをしようと考えています。  そこで、ソート関数の「qsort」というものを使ってソートしたいのですが、どのように使ったらいいのでしょうか?  参考例などがありましたら、教えていただけますか?  よろしくお願いします。