選択法や挿入法、マージソートやクイックソートの時間計算量の比較をしたいのですが、思うように時間計算量を出すことができません。
自分が書いた選択法のソースです。
#include <stdio.h> #include <stdlib.h> #include <sys/time.h> #define MAX 1000000 int main(){ int arrey[MAX],t = MAX; int inputdata(); struct timeval start_timeval, end_timeval; double sec_timeofday; gettimeofday( &start_timeval, NULL); int SelectionSort(); gettimeofday( &end_timeval, NULL); sec_timeofday = (end_timeval.tv_sec - start_timeval.tv_sec) + (end_timeval.tv_usec - start_timeval.tv_usec)/ 1000000.0; int printdata(); printf("処理時間0(%f)",sec_timeofday); } int inputdata(int t,int arrey[]){ int i; srand((unsigned)time(NULL)); printf("適当に並べられた数列-------\n"); for(i=0; i<=t; i++){ arrey[i] = (rand()%100+1); printf("arrey[%d]=%d\t",i,arrey[i]); } return(0); } int SelectionSort(int t,int arrey[]){ int p,q,x,y,min; for(p=0; p<=t-1; p++){ min=p; x=arrey[min]; for(q=p+1; q<=t; q++){ if(arrey[min]>arrey[q]){ arrey[min]=arrey[q]; y=q; } } arrey[p]=arrey[min]; arrey[y]=x; } return(0); } int printdata(int t,int arrey[]){ int g; printf("\n選択法の結果----------\n"); for(g=0; g<=t; g++) printf("arrey[%d]=%d\t",g,arrey[g]); return(0); } コード
このソースを実行すると、時間計算量が0.000000や0.000001という感じで表示されてしまいます。
乱数を使ってデータの入力をしたのですが、データの入力がされてないように思えます。
アドバイスどうかお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/01/01 07:38
2016/01/01 07:54 編集
2016/01/01 08:01
2016/01/01 08:19
2016/01/02 02:27