fork download
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <inttypes.h>
  4. #include <stdlib.h>
  5. #include <x86intrin.h>
  6.  
  7. #include <limits.h>
  8.  
  9. const int N=1024*256;
  10. int ner (int *a, int *b){return *a - *b;}
  11.  
  12. long long te_1(int N){
  13. int* volatile arr=malloc(sizeof(int)*N);
  14. for (int i=0;i<N;i++)
  15. arr[i]=i*i*i*i;
  16.  
  17. long long t1,t2;
  18. t1=_rdtsc();
  19. qsort(arr, N, sizeof(int), (void*)ner);
  20. t2=_rdtsc();
  21.  
  22. free(arr);
  23. return (t2-t1);
  24. }
  25.  
  26. long long te_2(int N){
  27. int* volatile arr=malloc(sizeof(int)*N);
  28. for (int i=0;i<N;i++)
  29. arr[i]=i*i*i*i;
  30.  
  31. long long t1,t2;
  32. long long m=0,e;
  33. t1=_rdtsc();
  34. for (int i=0;i<N;i++)
  35. for (int j=i+1;j<N;j++){
  36. e=abs(arr[j]-arr[i]);
  37. if (e>m) m=e;
  38. }
  39. t2=_rdtsc();
  40. free(arr);
  41. return (t2-t1);
  42. }
  43.  
  44.  
  45. int main(){
  46. printf("\n sizeof(size_t): %d\n\n",(int)sizeof(size_t));
  47. printf(" === Sortirovka :3 === \n");
  48. for (int o=0;o<3;o++){
  49. int mm[]={10,100,1000,10000,100000,1000000};
  50. for (int i=0;i<sizeof(mm)/sizeof(*mm);i++)
  51. printf(" %11d: %-11lld\n",mm[i],te_1(mm[i]));
  52. printf(" \n");
  53. }
  54. printf(" === pari :2 === \n");
  55. for (int o=0;o<3;o++){
  56. int mm[]={31, 100, 316, 1000, 3162, 10000, 31622};
  57. for (int i=0;i<sizeof(mm)/sizeof(*mm);i++)
  58. printf(" %11d: %-11lld\n",mm[i],te_2(mm[i]));
  59. printf(" \n");
  60. }
  61. system("pause");
  62. }
  63.  
Success #stdin #stdout #stderr 1.08s 9276KB
stdin
Standard input is empty
stdout
 sizeof(size_t): 8

        ===  Sortirovka :3  === 
          10: 2496       
         100: 10048      
        1000: 199280     
       10000: 2991232    
      100000: 34378512   
     1000000: 372428796  
 
          10: 4252       
         100: 10340      
        1000: 189904     
       10000: 3109936    
      100000: 38544456   
     1000000: 459918732  
 
          10: 3992       
         100: 9652       
        1000: 188952     
       10000: 3030112    
      100000: 39226420   
     1000000: 450979300  
 
        ===  pari :2  === 
          31: 2464       
         100: 15308      
         316: 103476     
        1000: 923112     
        3162: 8669340    
       10000: 89354352   
       31622: 793048228  
 
          31: 1972       
         100: 11492      
         316: 80104      
        1000: 575228     
        3162: 5256244    
       10000: 50923976   
       31622: 678829308  
 
          31: 2000       
         100: 11464      
         316: 72836      
        1000: 575236     
        3162: 5258848    
       10000: 50925456   
       31622: 683742660  
 
stderr
sh: 1: pause: not found