可达NOIP要求的简单快排

来源:互联网 发布:南威软件 怎么样 编辑:程序博客网 时间:2024/05/04 01:56
可以用qsort,一切就很简单了:-)
#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");
}

数据规模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;    
}



原创粉丝点击