【发布时间】:2016-04-25 23:32:30
【问题描述】:
在这里我试图计算完成合并排序所需的时间。但是开始和结束之间的差异显示为零秒。我不知道是什么问题。为方便起见,我只发布主要功能计算时间。
#include<stdio.h>
#include<time.h>
int main(){
clock_t start,end,diff;
start=clock();
int arr[4]={12,2,56,1};
int i;
printf("beforn sort\n");
printf("\n-------------\n");
for(i=0;i<4;i++){
printf("%d ",arr[i]);
}
printf("\n \n");
Merge_sort(arr,0,3);
printf("after merge sort\n");
printf("\n-------------\n");
for(i=0;i<4;i++){
printf("%d ",arr[i]);
}
printf("\n");
end=clock();
diff=(double)(end-start)/CLOCKS_PER_SEC;
printf("total time is %f sec ",diff);
}
【问题讨论】:
-
也许不到一秒
-
更重要的是,也许它花费的时间少于时钟的分辨率。对 4 元素数组进行合并排序将非常快。
-
除非处理器非常慢...
-
更重要的是,如果
clock_t是一个整数类型,printf("total time is %f sec ",diff);是未定义的行为,因为它会将错误的类型传递给printf("%f")。 -
把
diff的类型改成double怎么样?