• 締切済み

クイックソートの処理速度に関する実験 要素1万個、

クイックソートの処理速度に関する実験 要素1万個、2万個、3万個の配列変数にランダムな値を代入し、・その後クイックソートで小さい順に並べ替える #include<stdio.h> #include<stdlib.h> #include<time.h> #define ASIZE 10000 #define RAND_SEED 0x1131000 void my_sort(int left, int right, int a[]); int main(void){ clock_t start, end; int i,a[ASIZE]; srand(RAND_SEED); for(i=0;i<ASIZE; i++){ a[i]=rand(); } start=clock(); my_sort(0, ASIZE-1, a); end=clock(); printf("%.3f秒でした" ,(end-start)/(double)CLOCKS_PER_SEC); getchar(); return 0; } void my_sort(int left, int right, int a[]){ ここに入れるプログラムがわかりません return; }

みんなの回答

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.4

そもそも、 >#define ASIZE 10000 >int i,a[ASIZE]; このコードで、 >要素1万個、2万個、3万個の配列変数にランダムな値を代入 この仕様に対応できているのでしょうか。 それから、乱数の種は、固定値ではなくて例えば時刻とかにするのが 一般的ではないか、と個人的には思います。あ、どうでもいい話か。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

qsort が「クイックソート」であるという保証はどこにもありません>#2.

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

C言語のqsortを見ましたか? 次のように説明があるはずです。 void qsort( void *データ配列, unsigned int 要素数, unsigned int 1要素の大きさ, int (*大小判定関数)( void *要素1,void *要素2) ) 掲題の例では以下のようになります。 データ配列 = a 要素数 = right - left 1要素の大きさ = sizeof(int) 大小判定関数 → 自作 (1)最初に大小判定関数の事前定義が  必要です。  int 大小判定関数(const void *,const void *); (2)大小判定関数の実装  static int 大小判定関数(const void *要素1,                 const void *要素2)  {    //要素1 < 要素2 なら負の値を返す    if ( *((int *)要素1) < *((int *)要素2) ) return -1;    //要素1 > 要素2 なら正の値を返す    if ( *((int *)要素1) > *((int *)要素2) ) return 1;    //要素1 == 要素2 なら0を返す    return 0;  } (3)my_sortの実装  ここまで来ればお分かりでしょうから、  あとは書きません。  尚、データ形式が合わないとコンパイルで  エラーとなるので、適宜キャストしてあげる  必要があります。 コンパイラは何をお使いか分かりませんが、 日本語のシンボルが使えるものの場合は できるだけ日本語シンボルを使うべきだと 考えます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「クイックソートをする」プログラムを入れてください.

関連するQ&A

専門家に質問してみよう