Advertisement
Guest User

Untitled

a guest
Apr 22nd, 2019
214
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.24 KB | None | 0 0
  1. //------------------------------------------------------------------------------
  2. #pragma hdrstop
  3. #pragma argsused
  4. #include <stdio.h>
  5. #include <conio.h>
  6. #include <stdlib.h>
  7. //------------------------------------------------------------------------------
  8. void sort1r(float *arr,int l,int r,int opB)
  9. {
  10. int i=l, j=r, d, m=arr[(l+r)/2];
  11. while(i<=j)
  12. {
  13. for(i = l; arr[i]<m; i++);
  14. for(j = r; arr[j]>m; j--);
  15. if(i<=j)
  16. {
  17. d=arr[i];
  18. arr[i++]=arr[j];
  19. arr[j--]=d;
  20. opB++;
  21. }
  22. }
  23. if(l<j) sort1r(arr,l,j,opB);
  24. if(i<r) sort1r(arr,i,r,opB);
  25. }
  26. //------------------------------------------------------------------------------
  27. void sort2r(int *arr, int a, int b)
  28. {
  29. int c, i, j, mode;
  30. double sr=0;
  31.  
  32. if(a>=b) return;
  33. for (i = a; i <= b; ++i)
  34. sr+=arr[i];
  35. sr=sr/(b-a+1);
  36.  
  37. for (i=a, j=b; i <= j;) {
  38. if (arr[i] < sr) { i++; continue; }
  39. if (arr[j] >= sr) { j--; continue; }
  40.  
  41. c = arr[i];
  42. arr[i] = arr[j];
  43. arr[j] = c;
  44.  
  45. i++,j--;
  46. }
  47. if (i==a) return;
  48. sort2r(arr,a,j);
  49. sort2r(arr,i,b);
  50. }
  51. //------------------------------------------------------------------------------
  52. int main(void)
  53. {
  54. int a, b, i, j, size, opA = 0, opB = 0, min, buf;
  55. float A[100], B[100], key = NULL;
  56.  
  57. printf("Size of array: ");
  58. scanf("%d",&size);
  59.  
  60. printf("Elements of Array: \n");
  61. for(i = 0; i < size; ++i) {
  62. printf("A[%d] = ", i+1);
  63. scanf("%f", &A[i]);
  64. B[i] = A[i];
  65. }
  66.  
  67. printf("1th array:\n");
  68. printf("1. Metod Vstavki \n");
  69. printf("2. Metod Bul'bashok\n");
  70. printf("3. Metod Vibora\n");
  71. //printf("4. Exit\n");
  72. printf("Vash vibir?: ");
  73. scanf("%d", &a);
  74.  
  75. printf("~~~~~~~~~~~~~~~\n");
  76.  
  77. printf("2th array: \n");
  78. printf("1. Metod Hoara\n");
  79. printf("2. Metod Rekursivnogo Rozdilu\n");
  80. //printf("3. Exit\n");
  81. printf("Vash vibir?: ");
  82. scanf("%d", &b);
  83.  
  84. switch (a) {
  85. case 1:
  86. for(i = 0; i < size; ++i) { // 1) Ìåòîä Âñòàâêè;
  87. j = i - 1 ;
  88. key = A[i];
  89. while(A[j] > key && j >= 0) {
  90. A[j+1] = A[j];
  91. j -= 1;
  92. opA++;
  93. }
  94. A[j+1] = key;
  95. }
  96. break;
  97. case 2:
  98. for(i = size - 1; i >= 0; --i) {
  99. for(j = 0; j < i; ++j) {
  100. int tmp = 0;
  101. if (A[j] > A[j + 1])
  102. {
  103. tmp = A[j];
  104. A[j] = A[j + 1];
  105. A[j + 1] = tmp;
  106. }
  107. }
  108. }
  109. break;
  110. case 3:
  111. for(i = 0; i < size - 1; ++i) {
  112. min = i;
  113. for(j = i + 1; j < size; ++j) {
  114. if(A[j] < A[min]) {
  115. min = j;
  116. }
  117. }
  118. buf = A[i];
  119. A[i] = A[min];
  120. A[min] = buf;
  121. }
  122. break;
  123. }
  124.  
  125. switch (b) {
  126. case 1:
  127. sort1r(B,0,size-1,opB);
  128. break;
  129. case 2:
  130. sort2r(B,0,size-1);
  131. break;
  132. }
  133. //------------------------------------------------------------------------------
  134. for(i = 0; i < size; ++i) {
  135. printf("|A[%d] = %f|\n", i+1, A[i]);
  136. }
  137. printf("|~~~~~~~~~~~~~~~|\n");
  138. for(i = 0; i < size; ++i) {
  139. printf("|B[%d] = %f|\n", i+1, B[i]);
  140. }
  141. printf("|opA = %d opB = %d|",opA, opB);
  142.  
  143. getch();
  144. return 0;
  145. }
  146. //------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement