可以用qsort,一切就很简单了:-)
数据规模200万,在5s内搞定,竞赛用够了。。。
附上产生随即数据的程序
#include
<
stdlib.h
>
#include < ctime >
#include < string >
#include < iostream >
#include < fstream >
using namespace std;
#define MAXn 100
clock_t S,F;
int cmp( const void * a, const void * b)
... {
return *(int*)a-*(int*)b;
}
/**/ /
int main()... {
int num[100000]=...{0};
int ncou,tmp;
ifstream in("Ran_Out.txt");
ofstream out("Ran.txt");
in >> ncou;
S=clock();
for (int jj=0;jj<200;++jj) //做200次, 数据规模200万
...{
in.seekg(1L,ios::beg);
for (int i=0;i<=ncou;i++) ...{
in >>tmp;
num[i]=tmp;
//cout <<tmp;
}
qsort(num,ncou+1,sizeof(num[0]),cmp);
}
F=clock();
/**//*for (int i=0;i<=ncou;i++)
{
cout <<num[i]<<endl;
out <<num[i]<<endl;
}*/
cout<<double(F-S)/CLOCKS_PER_SEC;
system ("pause");
}
#include < ctime >
#include < string >
#include < iostream >
#include < fstream >
using namespace std;
#define MAXn 100
clock_t S,F;
int cmp( const void * a, const void * b)
... {
return *(int*)a-*(int*)b;
}
/**/ /
int main()... {
int num[100000]=...{0};
int ncou,tmp;
ifstream in("Ran_Out.txt");
ofstream out("Ran.txt");
in >> ncou;
S=clock();
for (int jj=0;jj<200;++jj) //做200次, 数据规模200万
...{
in.seekg(1L,ios::beg);
for (int i=0;i<=ncou;i++) ...{
in >>tmp;
num[i]=tmp;
//cout <<tmp;
}
qsort(num,ncou+1,sizeof(num[0]),cmp);
}
F=clock();
/**//*for (int i=0;i<=ncou;i++)
{
cout <<num[i]<<endl;
out <<num[i]<<endl;
}*/
cout<<double(F-S)/CLOCKS_PER_SEC;
system ("pause");
}
数据规模200万,在5s内搞定,竞赛用够了。。。
附上产生随即数据的程序
#include
<
string
>
#include < iostream >
#include < fstream >
#include < ctime >
#include < cstdlib >
using namespace std;
int main()
{
srand(time(0)); //seed
//ifstream in("Ran_in.txt");
ofstream out("Ran_out.txt");
for (int i=0 ;i<=10000;++i)
{
out << (rand() % 200+ 1) << " ";
}
system ("pause");
return 0;
}
#include < iostream >
#include < fstream >
#include < ctime >
#include < cstdlib >
using namespace std;
int main()
{
srand(time(0)); //seed
//ifstream in("Ran_in.txt");
ofstream out("Ran_out.txt");
for (int i=0 ;i<=10000;++i)
{
out << (rand() % 200+ 1) << " ";
}
system ("pause");
return 0;
}