実際にバブルソートを行っているfor文の前後で、clock関数を呼び出し、
その二つの差をとることによって、for文にかかった時間を測定しています。
しかしprintf関数で、その時間を出力すると、
0.00000となってしまい、ずっと0が続いてしまいます。試しに小数点以下のケタ数を、
%.10fと書き直してみたのですが、やはりずっと0としか表示されません。
これは、for文にかかった処理時間が、このケタ数では表示できないほどもっと速いということなのでしょうか。
それとも他に何か原因が考えられますでしょうか。
#include<stdio.h>
#include<time.h>
//関数プロトタイプ宣言
void bubble_sort(int sort[], int elenum2);
int main(void)
{
int ary[] = {16,21,95,32,20,73,73,32,12,5,2,45,29,9,7};
int elenum1 = 15; //要素数
bubble_sort(ary, elenum1);
return 0;
}
//バブルソート関数
void bubble_sort(int sort[], int elenum2)
{
int i, j, t;
clock_t start, end;
start = clock();
for(i = 0; i < elenum2 -1; i++){
for(j = elenum2 - 1; j > i; j--){
if(sort[j-1] > sort[j]){
t = sort[j];
sort[j] = sort[j-1];
sort[j-1] = t;
}
}
}
end = clock();
for(i = 0; i < elenum2; i++){
printf("%d, ", sort[i]);
}
putchar('\n');
printf("%.5f秒かかりました\n", (double)(end-start)/CLOCKS_PER_SEC);
return;
}