クイックソートの処理速度に関する実験
要素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;
}
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
そもそも、
>#define ASIZE 10000
>int i,a[ASIZE];
このコードで、
>要素1万個、2万個、3万個の配列変数にランダムな値を代入
この仕様に対応できているのでしょうか。
それから、乱数の種は、固定値ではなくて例えば時刻とかにするのが
一般的ではないか、と個人的には思います。あ、どうでもいい話か。
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の実装
ここまで来ればお分かりでしょうから、
あとは書きません。
尚、データ形式が合わないとコンパイルで
エラーとなるので、適宜キャストしてあげる
必要があります。
コンパイラは何をお使いか分かりませんが、
日本語のシンボルが使えるものの場合は
できるだけ日本語シンボルを使うべきだと
考えます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# プログラミングペーパーテスト 次の問題の実行結果を答えろ #include int x[ ] = { 1 2022/06/16 21:49
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#define _CRT_SECURE_NO_WARNIN...
-
C言語での引数の省略方法
-
「指定されたキャストは有効で...
-
複数桁10進数の*桁目だけを抽出...
-
卒業研究でよく分からないとこ...
-
ラップ関数とはどんなものですか?
-
(int *)の意味
-
if と配列の組み合わせ
-
足して100になるような乱数のア...
-
このプログラミング誰か教えて...
-
system関数がうまくいかない
-
【C++】関数ポインタの使い方
-
int16_t の _t は何?
-
C#の質問
-
エラー 添字が付けられた値が、...
-
構造体の勉強中です 合計点の高...
-
C言語 配列と関数の練習問題
-
c言語 〇×ゲーム
-
商と剰余を同時に求める(C言語)
-
c言語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「指定されたキャストは有効で...
-
C言語での引数の省略方法
-
複数桁10進数の*桁目だけを抽出...
-
#define _CRT_SECURE_NO_WARNIN...
-
ラップ関数とはどんなものですか?
-
卒業研究でよく分からないとこ...
-
【C++】関数ポインタの使い方
-
実数の整数部,小数部の取得
-
std::set<int> で、ある値が何...
-
C言語 エラーの原因がわからな...
-
c言語
-
system関数がうまくいかない
-
C++でvectorにテキストファイル...
-
acceptをalarmでタイムアウトさ...
-
if と配列の組み合わせ
-
return 1L
-
「{ } で囲むだけ」は正しい?
-
(マルチスレッド)_beginthrea...
-
PowerShellがうまくいかない
-
このプログラミング誰か教えて...
おすすめ情報