分别调用冒泡排序和选择排序,比较两种算法哪个更快,计算算法需要的时间。。
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<ctime>
const int number=5000;
using namespace std;
int main()
{
long t1,t2;
// srand(time(0));
int a[number];
// double sum=0;
// double ave=0;
ifstream infile("123.txt");
// infile.open("123.txt");
if(!infile)
{
cerr<<"file is not open..";
exit(1);
}
for(int i=0;i<number;i++)
{
// cout<<"输入第";
// cout.width(2);
// cout<<i+1<<"名学生成绩: ";
infile>>a[i];
// cout<<a[i]<<endl;
}
infile.close();
int num=0;
t1=time(0);
for(int i=0;i<number-1;i++)
for(int j=0;j<number-1-i;j++)
{
if(a[j]<a[j+1])
{
num=a[j];
a[j]=a[j+1];
a[j+1]=num;
}
}
t2=time(0);
for(int i=0;i<number;i++)
{
//cout<<a[i]<<".";
}
cout<<endl;
cout<<"冒泡法耗时为:"<<t2-t1<<endl;
cout<<endl;
cout<<endl;
ifstream infile2("123.txt");
if(!infile2)
{
cerr<<"file is not open!!!"<<endl;
exit(1);
}
for(int i=0;i<number;i++)
{
// cout<<"输入第";
// cout.width(2);
// cout<<i+1<<"名学生成绩: ";
infile2>>a[i];
// cout<<a[i]<<endl;
}
infile.close();
int num2;
t1=time(0);
for(int i=0;i<number-1;i++)
for(int j=i+1;j<number;j++)
{
if(a[i]<a[j])
{
num2=a[i];
a[i]=a[j];
a[j]=num2;
}
}
t2=time(0);
for(int i=0;i<number;i++)
{
//cout<<a[i]<<".";
}
cout<<endl;
cout<<"选择法耗时为:"<<t2-t1<<endl;
return 0;
}
这个程序统计时间只能统计整秒数,太愁人。把数据加大了不知道多少倍之后,冒泡法才显示程序执行时间为1.。而且由于机器本身的问题,有的时候还是两个程序的运行时间都是0.竟然还有一次冒泡法的时间为0,选择法的时间为1.。应该找一个可以计算时间更精确的方法。。。。