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

时间:2023-01-19 21:22:04

两个程序实现相同的功能
第一个程序是用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;
}

3 个解决方案

#1


这个,要等待键盘输入。
可能会影响准确性吧.

#2


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

#3


恩,是这样的,这个效率怎么差别这么大呢?那么多时间都用哪去了

引用 1 楼 huanmie_09 的回复:
这个,要等待键盘输入。
可能会影响准确性吧.

#1


这个,要等待键盘输入。
可能会影响准确性吧.

#2


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

#3


恩,是这样的,这个效率怎么差别这么大呢?那么多时间都用哪去了

引用 1 楼 huanmie_09 的回复:
这个,要等待键盘输入。
可能会影响准确性吧.