怎么用C显示程序运行的时间阿?
小弟做课程设计!数据排序的!要计算所用算法所花的时间!怎么弄阿??? 没人会吗?测试程序运行的时间!会的请出手阿!!!!!!!!!! 最近很多人都在做课程设计。测试程序运行的时间 ,无非是获取两个时间之差。
#include "time.h"
#include "stdio.h"
int main()
{
clock_t start,end;
int i;
start=clock();
for(i=0;i<10000;i++)printf("hello");
end=clock();
printf("The different is %6.3f\n",(double)(end-start));
system("pause");
return 0;
}
谢谢!还有个问题!现在有个快速排序的程序!是已经定了所排数据的!程序如下:
#include <stdio.h>
#include <stddef.h>
int main(void)
{
int keys[] = { 5, 8, 9, 15, -18, 150, 0, 55, -5, -108, 100 };
int i;
const int keys_size = (sizeof keys) / (sizeof *keys);
/* prototype */
void my_qsort(int v[], int left, int right);
my_qsort( keys, 0, keys_size - 1 );
for ( i = 0; i < keys_size; ++i ) {
printf("%d ", keys);
}
printf("\nPress ENTER to quit...");
getchar();
return 0;
}
/* my_qsort:sort v...v into increasing order */
void my_qsort(int v[], int left, int right)
{
int i, last;
/* prototype */
void my_swap(int v[], int i, int j);
if (left >= right) /* do nothing if array contains */
return; /* fewer than two elements */
my_swap(v, left, (left + right)/2); /* move partition elem */
last = left; /* to v */
for (i = left + 1; i <= right; i++) /* partition */
if (v < v)
my_swap(v, ++last, i);
my_swap(v, left, last); /* restore partition elem */
my_qsort(v, left, last-1);
my_qsort(v, last+1, right);
}
/* my_swap:interchange v and v */
void my_swap(int v[], int i, int j)
{
int temp;
temp = v;
v = v;
v = temp;
}
我想把它改成对随机数进行排序!我查了一些资料!我用了下面的语句改
int a;
int i,j,k,temp,n;
srand(time(0)); /* 设置种子 */
for(i=0;i<50;i++)
a=rand();
把rand()加到所要排的数据的地方!但是只有最后一个有数据!要怎么改才能使这个快速排序对随机数排呢!
如果我要用你教的方法输出程序运行的时间应该怎么做呢!
我还做了个冒泡排序!要求是计算各排序方法所用的时间。
我知道大家都很忙!可以的话就帮忙解决一下!今晚再奋斗一晚!明天就要交了!现在还在弄哈希表!头疼阿!
编辑了下格式
by powerwind
[ 本帖最后由 powerwind 于 2006-7-6 21:33 编辑 ] 还有高手在吗??? 我路过一下打声招呼:小猪猪好 好阿!呵呵! 试参考这里的最后一楼回帖
http://gdutbbs.com/thread-70276-1-1.html 我这样写可以计算这个程序的运行时间吗?
#include<stdio.h>
#include<stdlib.h>
#include <conio.h >
#include <math.h >
#include<time.h>
int main()
{ clock_t start,end;
start=clock();
int a;
int i,j,k,temp,n;
srand(time(0)); /* 设置种子 */
for(i=0;i<50;i++)
a=rand(); /* 随机产生50个数 */
for(i=0;i<49;i++) /* 排序 */
{
k=i;
for(j=i+1;j<50;j++)
if(a<a)k=j;
temp=a;
a=a;
a=temp;
}
printf("50个随机数经排序后为:\n");
for(i=0;i<50;i++)
printf("%d,",a);
end;
printf("运行时间为%6.3f\n",(double)(end-start));
end=clock();
system("pause");
return 0;
} 还有一种方法!
#include<stdio.h>
#include<stdlib.h>
#include <conio.h >
#include <math.h >
#include<time.h>
int main()
{
int a;
int i,j,k,temp,n;
long t1,t2;
srand(time(NULL));
time(&t1);
srand(time(0)); /* 设置种子 */
for(i=0;i<50;i++)
a=rand(); /* 随机产生50个数 */
for(i=0;i<49;i++) /* 排序 */
{
k=i;
for(j=i+1;j<50;j++)
if(a<a)k=j;
temp=a;
a=a;
a=temp;
}
printf("50个随机数经排序后为:\n");
for(i=0;i<50;i++)
printf("%d,",a);
time(&t2);
printf("运行时间为%6.3f\n",(double)(t2-t1));
system("pause");
return 0;
}
但是得到的时间都是0.000
[ 本帖最后由 powerwind 于 2006-7-6 22:52 编辑 ] 不好意思,还不会版主帮忙弄的格式!呵呵 格式用[ code ]代码[ / code ]
楼主最好自己试试行不行,如果不行,再想想为什么,想办法解决。
总体思路正确,其它的就是锻炼解决问题的能力了。 调试成功!2个都可以!但是运行时间都是0.000!不管我后面放多少位都是??? printf("运行时间为%6.3f\n",(double)(end-start));
end=clock();
是不是这两句要变成
end=clock();
printf("运行时间为%6.3f\n",(double)(end-start)); 我上面用的第二种方法就是你 的这个思想!我试了你的办法!结果还是一样的!是不是要设定单位用更小的单位呢!现在的单位是以秒计算的吗? 也行是运行的时间太短。
改成这样可以
#include<stdio.h>
#include<stdlib.h>
#include <conio.h >
#include <math.h >
#include<time.h>
int main()
{
int a;
int i,j,k,temp,n;
double t1,t2;
clock_t start,end;
start=clock();
srand(time(NULL));
srand(time(0)); /* 设置种子 */
for(i=0;i<500;i++)
a=rand(); /* 随机产生50个数 */
for(i=0;i<49;i++) /* 排序 */
{
k=i;
for(j=i+1;j<500;j++)
if(a<a)k=j;
temp=a;
a=a;
a=temp;
}
printf("50个随机数经排序后为:\n");
for(i=0;i<500;i++)
printf("%d,",a);
end=clock();
printf("运行时间为%6.3f\n",(double)(end-start));
system("pause");
return 0;
}
恩!随机数多了时间就可以显示了!呵呵!谢谢版主!
页:
[1]