可达NOIP要求的简单快排

可以用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;    
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值