fork download
  1.  
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4.  
  5.  
  6. void ShellSort701 (int array[], int size) // * ?k = (b?k?1)/2 ?0 = N
  7. {
  8. int step, i, j, tmp;
  9.  
  10. // Выбор шага
  11.  
  12. step = 701;
  13. for (i = step; i < size; i++)
  14. // Перестановка элементов внутри подсписка, пока i-тый не будет отсортирован
  15. for (j = i - step; j >= 0 && array[j] > array[j + step]; j -= step)
  16. {
  17. tmp = array[j];
  18. array[j] = array[j + step];
  19. array[j + step] = tmp;
  20. }
  21. }
  22. void ShellSort301 (int array[], int size) // * ?k = (b?k?1)/2 ?0 = N
  23. {
  24. int step, i, j, tmp;
  25.  
  26. // Выбор шага
  27.  
  28. step = 301;
  29. for (i = step; i < size; i++)
  30. // Перестановка элементов внутри подсписка, пока i-тый не будет отсортирован
  31. for (j = i - step; j >= 0 && array[j] > array[j + step]; j -= step)
  32. {
  33. tmp = array[j];
  34. array[j] = array[j + step];
  35. array[j + step] = tmp;
  36. }
  37. }
  38. void ShellSort132 (int array[], int size) // * ?k = (b?k?1)/2 ?0 = N
  39. {
  40. int step, i, j, tmp;
  41.  
  42. // Выбор шага
  43.  
  44. step = 132;
  45. for (i = step; i < size; i++)
  46. // Перестановка элементов внутри подсписка, пока i-тый не будет отсортирован
  47. for (j = i - step; j >= 0 && array[j] > array[j + step]; j -= step)
  48. {
  49. tmp = array[j];
  50. array[j] = array[j + step];
  51. array[j + step] = tmp;
  52. }
  53. }
  54. void ShellSort57 (int array[], int size) // * ?k = (b?k?1)/2 ?0 = N
  55. {
  56. int step, i, j, tmp;
  57.  
  58. // Выбор шага
  59.  
  60. step = 57;
  61. for (i = step; i < size; i++)
  62. // Перестановка элементов внутри подсписка, пока i-тый не будет отсортирован
  63. for (j = i - step; j >= 0 && array[j] > array[j + step]; j -= step)
  64. {
  65. tmp = array[j];
  66. array[j] = array[j + step];
  67. array[j + step] = tmp;
  68. }
  69. }
  70. void ShellSort23 (int array[], int size) // * ?k = (b?k?1)/2 ?0 = N
  71. {
  72. int step, i, j, tmp;
  73.  
  74. // Выбор шага
  75.  
  76. step = 23;
  77. for (i = step; i < size; i++)
  78. // Перестановка элементов внутри подсписка, пока i-тый не будет отсортирован
  79. for (j = i - step; j >= 0 && array[j] > array[j + step]; j -= step)
  80. {
  81. tmp = array[j];
  82. array[j] = array[j + step];
  83. array[j + step] = tmp;
  84. }
  85. }
  86. void ShellSort10 (int array[], int size) // * ?k = (b?k?1)/2 ?0 = N
  87. {
  88. int step, i, j, tmp;
  89.  
  90. // Выбор шага
  91.  
  92. step = 10;
  93. for (i = step; i < size; i++)
  94. // Перестановка элементов внутри подсписка, пока i-тый не будет отсортирован
  95. for (j = i - step; j >= 0 && array[j] > array[j + step]; j -= step)
  96. {
  97. tmp = array[j];
  98. array[j] = array[j + step];
  99. array[j + step] = tmp;
  100. }
  101. }
  102. void ShellSort4 (int array[], int size) // * ?k = (b?k?1)/2 ?0 = N
  103. {
  104. int step, i, j, tmp;
  105.  
  106. // Выбор шага
  107.  
  108. step = 4;
  109. for (i = step; i < size; i++)
  110. // Перестановка элементов внутри подсписка, пока i-тый не будет отсортирован
  111. for (j = i - step; j >= 0 && array[j] > array[j + step]; j -= step)
  112. {
  113. tmp = array[j];
  114. array[j] = array[j + step];
  115. array[j + step] = tmp;
  116. }
  117. }
  118. void ShellSort1 (int array[], int size) // * ?k = (b?k?1)/2 ?0 = N
  119. {
  120. int step, i, j, tmp;
  121.  
  122. // Выбор шага
  123.  
  124. step = 1;
  125. for (i = step; i < size; i++)
  126. // Перестановка элементов внутри подсписка, пока i-тый не будет отсортирован
  127. for (j = i - step; j >= 0 && array[j] > array[j + step]; j -= step)
  128. {
  129. tmp = array[j];
  130. array[j] = array[j + step];
  131. array[j + step] = tmp;
  132. }
  133. }
  134.  
  135. int main(){
  136. srand (time (NULL));
  137.  
  138. int size = 200;
  139. int array[size];
  140. printf(" Before \n");
  141. for(int i = 0; i < size; i ++){
  142. array[i] = rand()%1000;
  143. }
  144. for(int i = 0; i < size; i++){
  145. printf("%d \t", array[i]);
  146. }
  147. ShellSort701(array, size);
  148. ShellSort301(array, size);
  149. ShellSort132(array, size);
  150. ShellSort57(array, size);
  151. ShellSort23(array, size);
  152. ShellSort10(array, size);
  153. ShellSort4(array, size);
  154. ShellSort1(array, size);
  155.  
  156. printf("\n After \n");
  157.  
  158. for(int i = 0; i < size; i++){
  159. printf("%d \t", array[i]);
  160. }
  161. return 0;
  162. }
  163.  
Success #stdin #stdout 0s 4516KB
stdin
Standard input is empty
stdout
 Before 
202 	84 	610 	677 	991 	379 	896 	485 	712 	246 	229 	950 	142 	599 	351 	707 	553 	202 	870 	439 	921 	56 	497 	814 	569 	59 	76 	503 	867 	876 	531 	69 	312 	493 	98 	303 	224 	346 	140 	936 	593 	722 	886 	87 	673 	238 	795 	226 	792 	665 	17 	65 	721 	515 	880 	643 	926 	308 	498 	793 	184 	30 	215 	848 	875 	313 	503 	100 	660 	644 	36 	605 	718 	923 	692 	391 	513 	487 	970 	657 	505 	987 	722 	578 	854 	954 	221 	781 	263 	720 	926 	799 	102 	141 	648 	977 	455 	151 	77 	467 	147 	466 	72 	865 	741 	764 	609 	254 	604 	579 	263 	461 	566 	985 	39 	773 	292 	261 	906 	555 	333 	832 	354 	435 	974 	354 	764 	429 	858 	842 	896 	357 	660 	320 	575 	401 	84 	184 	655 	40 	763 	270 	501 	681 	255 	541 	806 	899 	154 	712 	454 	487 	545 	161 	922 	519 	867 	686 	300 	77 	880 	548 	435 	540 	868 	10 	293 	304 	546 	300 	345 	309 	570 	198 	342 	178 	739 	149 	77 	245 	861 	884 	732 	758 	397 	6 	277 	264 	45 	929 	342 	925 	477 	129 	818 	345 	139 	463 	2 	37 	
 After 
2 	6 	10 	17 	30 	36 	37 	39 	40 	45 	56 	59 	65 	69 	72 	76 	77 	77 	77 	84 	84 	87 	98 	100 	102 	129 	139 	140 	141 	142 	147 	149 	151 	154 	161 	178 	184 	184 	198 	202 	202 	215 	221 	224 	226 	229 	238 	245 	246 	254 	255 	261 	263 	263 	264 	270 	277 	292 	293 	300 	300 	303 	304 	308 	309 	312 	313 	320 	333 	342 	342 	345 	345 	346 	351 	354 	354 	357 	379 	391 	397 	401 	429 	435 	435 	439 	454 	455 	461 	463 	466 	467 	477 	485 	487 	487 	493 	497 	498 	501 	503 	503 	505 	513 	515 	519 	531 	540 	541 	545 	546 	548 	553 	555 	566 	569 	570 	575 	578 	579 	593 	599 	604 	605 	609 	610 	643 	644 	648 	655 	657 	660 	660 	665 	673 	677 	681 	686 	692 	707 	712 	712 	718 	720 	721 	722 	722 	732 	739 	741 	758 	763 	764 	764 	773 	781 	792 	793 	795 	799 	806 	814 	818 	832 	842 	848 	854 	858 	861 	865 	867 	867 	868 	870 	875 	876 	880 	880 	884 	886 	896 	896 	899 	906 	921 	922 	923 	925 	926 	926 	929 	936 	950 	954 	970 	974 	977 	985 	987 	991