两个程序耗时不一样怎么回事啊---高手指点下

「已注销」 2010-06-06 05:17:14

两个程序实现相同的功能
第一个程序是用C和数组实现的,用时4500左右
第二个程序是用c++和向量容器实现的,用时1400左右

然我迷惑的是,用时多的那个程序在输入数据回车之后可以立即显示输出结果,用时少的那个程序输入数据回车之后要延迟一段时间才输出结果,这个是怎么回事啊???

程序一

//#include <iostream.h>
#include <stdio.h>
#include <time.h>

void main()
{
time_t starttime,endtime,time;
starttime=clock();


int a,b,k,n,i,j,h,t,u,c[3000],d[3000];
scanf("%d %d %d",&a,&b,&k);
n=0;
for(j=a;j<=b;j++)
{
for (i=1;i<=j-1;i++)
{
for (t=0,u=2;u<=i;u++)
if(j%u==0 && i%u==0)
{
t=1;
break;
}
if (t==0)
{
n++;
c[n]=i;
d[n]=j;
}
}
}

for(i=1;i<=n-1;i++)
for(j=1;j<=n-i;j++)
if (c[j]*d[j+1]>c[j+1]*d[j])
{
h=c[j];
c[j]=c[j+1];
c[j+1]=h;

h=d[j];
d[j]=d[j+1];
d[j+1]=h;
}

printf("n=%d\n",n);
printf("第%d项为:%d/%d\n",k,c[k],d[k]);

endtime=clock();
time=endtime-starttime;

//cout<<"用时:"<<time<<endl;
printf("用时:%d\n",time);

}


程序二

#include <iostream>
#include <algorithm>
#include <vector>
#include <ctime>

using namespace std;

int main()
{
long a,b,k,temp;
time_t starttime,endtime,time;
cin>>a>>b>>k;
starttime=clock();

vector<int> v1,v2;

long coun=0;
for (int i=a;i<=b;i++)
{
for (int j=1;j<i;j++)
{
int m=i;
int n=j;
while (m%n)
{
temp=m%n;
m=n;
n=temp;
}
if (n==1)
{
v1.push_back(i);
v2.push_back(j);
coun++;
}

}

}
int t1,t2;

int p,q;

for (q=0;q<k;q++)
{
for (p=v1.size()-2;p>=q;p--)
{
t1=v2[p]*v1[p+1];
t2=v1[p]*v2[p+1];
if (t1>t2)
{
swap(v1[p],v1[p+1]);
swap(v2[p],v2[p+1]);
}

}

}

cout<<"真分数总数:"<<coun<<endl;
cout<<"第k项为:"<<v2[k-1]<<"/"<<v1[k-1]<<endl;

v1.clear();
v2.clear();

endtime=clock();
time=endtime-starttime;

cout<<"用时:"<<time<<endl;


return 0;
}
...全文
49 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-06-06
  • 打赏
  • 举报
回复
恩,是这样的,这个效率怎么差别这么大呢?那么多时间都用哪去了

[Quote=引用 1 楼 huanmie_09 的回复:]

这个,要等待键盘输入。
可能会影响准确性吧.
[/Quote]
liutengfeigo 2010-06-06
  • 打赏
  • 举报
回复

玩极限啊~
huanmie_09 2010-06-06
  • 打赏
  • 举报
回复
这个,要等待键盘输入。
可能会影响准确性吧.

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧