fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct Resource
  6. {
  7. int low;
  8. int length;
  9. int *data;
  10. } Resource;
  11.  
  12. void Swap(int *first, int *second)
  13. {
  14. int tmp = *first;
  15. *first = *second;
  16. *second = tmp;
  17. }
  18.  
  19. void SortQuick(int **data, int *low, int *high)
  20. {
  21. int i = *low,
  22. j = *high,
  23. x = (*data)[(*low + *high) / 2];
  24.  
  25. do
  26. {
  27. while((*data)[i] < x) i++;
  28. while((*data)[j] > x) j--;
  29.  
  30. if(i <= j)
  31. {
  32. Swap(&(*data)[i], &(*data)[j]);
  33. i++;
  34. j--;
  35. }
  36.  
  37. } while(i <= j);
  38.  
  39. if(i < *high) SortQuick(data, &i, high);
  40. if(*low < j) SortQuick(data, low, &j);
  41. }
  42.  
  43. void ArrayPrint(int **data, int *array_length)
  44. {
  45. for(int i = 0; i < *array_length; i++)
  46. {
  47. printf("[%i]: %20i\r\n", i, (*data)[i]);
  48. }
  49. }
  50.  
  51. void ArrayInit(int **data, int *array_length)
  52. {
  53. (*data) = (int*)malloc(sizeof(int) * *array_length);
  54.  
  55. for(int i = 0; i < *array_length; i++)
  56. {
  57. (*data)[i] = rand();
  58. }
  59. }
  60.  
  61. int GlobalInit(Resource **data_resource)
  62. {
  63. srand((unsigned int)rand());
  64.  
  65. *data_resource = (Resource*)malloc(sizeof(Resource));
  66. (*data_resource)->low = 0;
  67. (*data_resource)->length = 10;//rand();
  68.  
  69. ArrayInit(&(*data_resource)->data, &(*data_resource)->length);
  70.  
  71. return (*data_resource)->length;
  72. }
  73.  
  74. void BenchmarkTest(Resource **data_resource)
  75. {
  76. ArrayPrint(&(*data_resource)->data, &(*data_resource)->length);
  77. (*data_resource)->length--;
  78. SortQuick(&(*data_resource)->data, &(*data_resource)->low, &(*data_resource)->length);
  79. (*data_resource)->length++;
  80. ArrayPrint(&(*data_resource)->data, &(*data_resource)->length);
  81. }
  82.  
  83. int main(void)
  84. {
  85. Resource *data_resource = NULL;
  86.  
  87. GlobalInit(&data_resource);
  88. BenchmarkTest(&data_resource);
  89.  
  90. return 0;
  91. }
Success #stdin #stdout 0.02s 1808KB
stdin
Standard input is empty
stdout
[0]:           1362961854
[1]:              8891098
[2]:            392263175
[3]:            158428306
[4]:           2074436122
[5]:             47170999
[6]:            431826012
[7]:           1599373168
[8]:           1769073836
[9]:           1043058022
[0]:              8891098
[1]:             47170999
[2]:            158428306
[3]:            392263175
[4]:            431826012
[5]:           1043058022
[6]:           1362961854
[7]:           1599373168
[8]:           1769073836
[9]:           2074436122