前提・実現したいこと
2つの配列を用意し、それぞれのバブルソートでの処理時間を比較しました。
疑問点
data1の配列の要素数は4, data2は5です。
私の予想では要素数の少ないdata1のほうが処理時間が短いと思っていましたが、
実際の出力ではdata1のほうが処時間が長いか、data2と同じになりました。
・なぜ、要素数の少ない配列のほうが処理に時間がかかるのか
・なぜ、同じ処理を行うにもかかわらず、処理時間にばらつきが出るのか
以上、2点についてどなたかご教示していただけると幸いです。
$ ./a.out data1のバブルートにかかった時間は0.000005秒です。 data2のバブルートにかかった時間は0.000003秒です。 ............................................ $ ./a.out data1のバブルートにかかった時間は0.000004秒です。 data2のバブルートにかかった時間は0.000003秒です。 ............................................ $ ./a.out data1のバブルートにかかった時間は0.000004秒です。 data2のバブルートにかかった時間は0.000004秒です。
該当のソースコード
#include <stdio.h> #include <time.h> #include <stdlib.h> // プロトタイプ宣言 void swap(int*, int*); void bubble_sort(int*, int); // 値を入れ替える関数 void swap(int *x, int *y){ int temp; // 一時保存用の変数 temp = *x; *x = *y; *y = temp; } // バブルソート関数(昇順) void bubble_sort(int *data, int array_size){ int i, j; for(i=0; i<array_size-1; i++){ for(j=array_size-1; j>i; j--){ if(data[j-1] > data[j]){ swap(&data[j], &data[j-1]); } } } } int main(void){ clock_t start, end; int data1[] = {1, 23, 5, 8}; int data2[] = {2, 29, 5, 19, 20}; double time; // 処理時間計測 start = clock(); bubble_sort(data1, 4); end = clock(); time = (double)(end - start)/CLOCKS_PER_SEC; printf("data1のバブルートにかかった時間は%lf秒です。\n", time); start = clock(); bubble_sort(data2, 5); end = clock(); time = (double)(end - start)/CLOCKS_PER_SEC; printf("data2のバブルートにかかった時間は%lf秒です。\n", time); return 0; }
回答1件
あなたの回答
tips
プレビュー