Advertisement
Guest User

Untitled

a guest
Mar 28th, 2020
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1.  
  2. Source
  3. 윤성준
  4. 받는사람 나
  5. 48분 전세부정보
  6. Lorne Balfe - "Nobel Prize" (from the National Geographic Television Series)
  7.  
  8. [code]
  9. #include<stdio.h>
  10. #include<stdlib.h>
  11. #include<time.h>
  12. int arr[1000];
  13. int sorted[1000];
  14. void quick_sort(int first, int end)
  15. {
  16. int i, pivot;
  17. i = pivot = first;
  18. int j = end;
  19. int temp;
  20.  
  21. if(first < end)
  22. {
  23. while(i < j)
  24. {
  25. while(arr[i] <= arr[pivot] && i < end)
  26. {
  27. i++;
  28. }
  29. while(arr[j] > arr[pivot])
  30. {
  31. j--;
  32. }
  33. if(i < j)
  34. {
  35. temp = arr[i];
  36. arr[i] = arr[j];
  37. arr[j] = temp;
  38. }
  39. }
  40. temp = arr[pivot];
  41. arr[pivot] = arr[j];
  42. arr[j] = temp;
  43. quick_sort(first, j - 1);
  44. quick_sort(j + 1, end);
  45. }
  46. }
  47. void merge(int left, int right)
  48. {
  49. int m = left;
  50. int first = left, second = (left + right) / 2 + 1;
  51. bool first_empty = false, second_empty = false;
  52. while (1)
  53. {
  54. if (second > right)
  55. {
  56. second_empty = true;
  57. break;
  58. }
  59. if (first > (left + right) / 2)
  60. {
  61. first_empty = true;
  62. break;
  63. }
  64. if (arr[first] < arr[second])
  65. {
  66. sorted[m++] = arr[first++];
  67. }
  68. else
  69. {
  70. sorted[m++] = arr[second++];
  71. }
  72. }
  73. if (second_empty == true)
  74. {
  75. for (int i = first; i <= (left + right) / 2; i++)
  76. {
  77. sorted[m++] = arr[i];
  78. }
  79. }
  80. else
  81. {
  82.  
  83. for (int i = second; i<= right; i++)
  84. {
  85. sorted[m++] = arr[i];
  86. }
  87. }
  88. for (int i = left; i <= right; i++)
  89. {
  90. arr[i] = sorted[i];
  91. }
  92. }
  93. void merge_sort(int start, int end)
  94. {
  95. if(start < end)
  96. {
  97. merge_sort(start , (start + end ) / 2);
  98. merge_sort((start + end) / 2 + 1, end);
  99. merge(start, end);
  100. }
  101. }
  102. void selection_sort()
  103. {
  104. int temp;
  105. for(int i = 0 ; i < 1000; i++)
  106. {
  107. for(int j = i + 1; j < 1000; j++)
  108. {
  109. if(arr[i] < arr[j])
  110. {
  111. temp = arr[i];
  112. arr[i] = arr[j];
  113. arr[j] = temp;
  114. }
  115. }
  116. }
  117. }
  118. int main(void)
  119. {
  120. srand(time(NULL));
  121. double sum = 0;
  122. time_t start, end;
  123. long long int quick_sort_count = 0, merge_sort_count = 0, selection_sort_count = 0;
  124. for(int k = 0 ; k < 10 ; k++)
  125. {
  126. while(sum <= 10000)
  127. {
  128. for(int i = 0; i < 1000; i++)
  129. {
  130. arr[i] = (rand()%1000 + 1);
  131. }
  132. start = clock();
  133. quick_sort(0, 999);
  134. end = clock();
  135. sum += (double)(end - start);
  136. quick_sort_count++;
  137. }
  138. sum = 0;
  139. while(sum <= 10000)
  140. {
  141. for(int i = 0; i < 1000; i++)
  142. {
  143. arr[i] = (rand()%1000 + 1);
  144. }
  145. start = clock();
  146. merge_sort(0, 999);
  147. end = clock();
  148. sum += (double)(end - start);
  149. merge_sort_count++;
  150. }
  151. sum = 0;
  152. while(sum <= 10000)
  153. {
  154. for(int i = 0; i < 1000; i++)
  155. {
  156. arr[i] = (rand()%1000 + 1);
  157. }
  158. start = clock();
  159. selection_sort();
  160. end = clock();
  161. sum += (double)(end - start);
  162. selection_sort_count++;
  163. }
  164. sum = 0;
  165. printf("quick sort : %lld / merge_sort : %lld / selection_sort : %lld\n", quick_sort_count, merge_sort_count, selection_sort);
  166. quick_sort_count = merge_sort_count = selection_sort_count = 0;
  167. }
  168. return 0;
  169. }
  170. [/code]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement