计算程序输入时间为何总为0啊
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i,j,num,k;
int *ptr;
clock_t start ,end;
double dtime[5]; //要加算几段程序就设置为几
printf( "=============随机数组排序==================\n ");
printf( "请输入你要排序多少个数: ");
scanf( "%d ",&num);
ptr=(int*)malloc(sizeof(int)*num);
if (ptr ==NULL)
{
printf( "内存空间不足,无法分配\n ");
exit(0);
}
srand((unsigned)time(NULL));
//子和rand()不要放在一个循环里面,要不返回值一样 不解 和人知道怎么回事来着。
start= clock();
for(i=0;i <num;i++)
{//记住这个排序从0开始,刚从num开始没取到0老输出错误
*(ptr+i)=rand()%num+1;
}
end= clock();
dtime[0]=(double)end-start ;
//=============开始冒泡排序================
start= clock();//纪录时间
for(i=num-1;i> =0;i--)
{//减去2是因为这用到了0所以减去1
for(j=0;j <i;j++)
{
if(*(ptr+j)> *(ptr+j+1))
{
k=*(ptr+j);
*(ptr+j)=*(ptr+j+1);
*(ptr+j+1)=k;
}
}
}
end= clock(); //结束记时
dtime[1]=(double)end-start ;
printf( "====显示排列后的值============\n ");
start= clock();//纪录时间
for (i=0;i <num;i++)
{
printf( "数组值为:%d\n ",*(ptr+i));//显示存入数组的值
}
end= clock(); //结束记时
dtime[2]=(double)end-start ;
printf( "输入所费时间为%f\n ",dtime[0] / CLOCKS_PER_SEC);
printf( "排序所费时间为%f\n ",dtime[1] / CLOCKS_PER_SEC);
printf( "输出所费时间为%f\n ",dtime[2] / CLOCKS_PER_SEC);
//如何计算一段代码执行的时间啊
free(ptr);//释放动态分配内存
system( "PAUSE ");
return 0;
}
输入来现实为0郁闷 我输入10000时明显卡了下但输入时间还是为0郁闷了。
有没更精确的计算时间啊。
我这个输入1000纪录内全是0 哦
[解决办法]
产生随机数的时间是很短的,时间应该是没什么问题,毫秒级的精度够了
[解决办法]
GetTickCount行不行?