ACM/ICPC获取程序运行时间

本文介绍了一种使用深度优先搜索结合强剪枝策略的方法,旨在提高ACM/ICPC竞赛中算法题目的运行效率。文章通过具体实例展示了如何通过多次执行测试过程并利用clock()函数测量运行时间,以此评估算法的优化效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在参加ACM/ICPC的培训,在做一道深度优先搜索+强剪枝的问题时,想要通过多种剪枝策略来提高运行效率,减少运行时间.
在<time.h>里有函数clock();本身这个函数取得的时间好像是ms,要取得s就
写成clock()/CLOCKS_PER_SEC;但CLOCKS_PER_SEC是在time.h里定义的,如果没这个定义
那只能用clock();取得ms;这个函数的执行不会中途停止,如果是在windows系统下,因为它是
多任务系统,它需要在各任务之间切换,如果在测试过程中,执行其他程序,所其得的时间,就会
出现差别,还有windows运行速度相当快,对于小型的测试,所得的时间几乎为0,因此最好将
要测试的过程执行100次或以上,然后再将取得的时间执行次数;输出非常耗时间,没什么必要
的话,就不要输出
这是一个测试选择排序的程序

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

#define M 1000 /* 执行次数 */ 
#define N 500 /* 数组大小 */ 
void SelectSort(int *a,int l,int r) { 
int i,j,v; 
for (i=0;i<r;i++) { 
for (j=i+1;j<=r;j++) { 
if (*(a+i)>*(a+j)) 
v=*(a+i),*(a+i)=*(a+j),*(a+j)=v; 
} 
} 
} 

void main() { 
int a[N],i,j; 
double start,finish; /* 开始时间,结束时间 */ 

start=(double)clock(); /* 我的time.h内没有CLOCKS_PER_SEC */ 
for (j=0;j<M;j++) { /* 执行M次 */ 
for (i=0;i<N;*(a+i++)=rand()%10); /* 每次重新赋值 */ 
SelectSort(a,0,N-1); 
} 
finish=(double)clock(); 
printf("%.4fms",(finish-start)/M); 

getchar(); 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值