当前位置:   article > 正文

算法竞赛入门经典习题与解答-第一章_算法竞赛入门经典 习题与解答pdf

算法竞赛入门经典 习题与解答pdf

1.1.1 排序性能问题

 C语言的函数qsort,C++中的sort(直接传入排序函数)以及传入functor对象的sort函数代码以及时间。

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define _for(i,a,b) for( int i=(a); i<(b); ++i)
  4. const int N = 10000000;
  5. struct TS{
  6. int a,b,c;
  7. };
  8. inline bool cmp (const TS&t1, const TS&t2){
  9. if(t1.a!=t2.a)return t1.a<t2.a;
  10. if(t1.b!=t2.b)return t1.b<t2.b;
  11. return t1.c<t2.c;
  12. }
  13. int cmp4qsort(const void * a, const void * b){
  14. TS *t1 = (TS*)a, *t2 = (TS*)b;
  15. if(t1->a != t2->a) return t1->a - t2->a;
  16. if(t1->b != t2->b) return t1->b - t2->b;
  17. return t1->c - t2->c;
  18. }
  19. struct cmpFunctor{
  20. inline bool operator() (const TS& t1, const TS& t2){
  21. if(t1.a != t2.a) return t1.a < t2.a;
  22. if(t1.b != t2.b) return t1.b < t2.b;
  23. return t1.c < t2.c;
  24. }
  25. };
  26. TS tss[N];
  27. void genData(){
  28. _for(i , 0, N){
  29. tss[i].a = rand();
  30. tss[i].b = rand();
  31. tss[i].c = rand();
  32. }
  33. }
  34. int main()
  35. {
  36. srand(time(NULL));
  37. genData();
  38. clock_t start = clock();
  39. sort(tss, tss+N, cmp);
  40. printf("sort by funtion pointer : %ld\n",clock() - start);
  41. genData();
  42. start = clock();
  43. sort(tss, tss+N, cmpFunctor());
  44. printf("sort by functor : %ld\n",clock() - start);
  45. genData();
  46. start = clock();
  47. qsort(tss, N, sizeof(TS), cmp4qsort);
  48. printf("qso
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号