Advertisement
Guest User

Untitled

a guest
May 25th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <conio.h>
  3. #include <iostream>
  4. #include <string>
  5. #include <locale>
  6. using namespace std;
  7.  
  8. void Less_quickSortR(int *a, long N)
  9. {
  10. // На входе - массив a[], a[N] - его последний элемент.
  11. long i = 0, j = N; // поставить указатели на исходные места
  12. int temp, p;
  13. p = a[ N>>1 ]; // центральный элемент
  14. // процедура разделения
  15. do {
  16. while ( a[i] > p ) i++;
  17. while ( a[j] < p ) j--;
  18.  
  19. if (i <= j) {
  20. temp = a[i]; a[i] = a[j]; a[j] = temp;
  21. i++; j--;
  22. }
  23. } while ( i<=j );
  24. // рекурсивные вызовы, если есть, что сортировать
  25. if ( j > 0 ) Less_quickSortR(a, j);
  26. if ( N > i ) Less_quickSortR(a+i, N-i);
  27. }
  28.  
  29. void More_quickSortR(int *a, long N)
  30. {
  31. // На входе - массив a[], a[N] - его последний элемент.
  32. long i = 0, j = N; // поставить указатели на исходные места
  33. int temp, p;
  34. p = a[ N>>1 ]; // центральный элемент
  35. // процедура разделения
  36. do {
  37. while ( a[i] < p ) i++;
  38. while ( a[j] > p ) j--;
  39.  
  40. if (i <= j) {
  41. temp = a[i]; a[i] = a[j]; a[j] = temp;
  42. i++; j--;
  43. }
  44. } while ( i<=j );
  45. // рекурсивные вызовы, если есть, что сортировать
  46. if ( j > 0 ) More_quickSortR(a, j);
  47. if ( N > i ) More_quickSortR(a+i, N-i);
  48. }
  49. void main(int argc, char* argv[])
  50. {
  51. const int n=10;
  52. int a[n]; int nech[n/2]; int ch[n/2];
  53.  
  54. srand((unsigned)time(0));
  55. for(int i=0; i<n; i++)
  56. {
  57. a[i]=rand()%64;
  58. cout<<a[i]<<" ";
  59. }
  60. cout<<endl;
  61. int k = 0;
  62. for (int i = 0; i < 10; i+=2)
  63. {
  64. nech[k] = a[i];
  65. ch[k] = a[i+1];
  66. k++;
  67. }
  68. More_quickSortR(nech, (n/2)-1);
  69. Less_quickSortR(ch, (n/2)-1);
  70. for(int i=0; i<n/2; i++)
  71. {
  72. cout<<nech[i]<<" ";
  73. }
  74. cout << endl;
  75. for(int i=0; i<n/2; i++)
  76. {
  77. cout<<ch[i]<<" ";
  78. }
  79. cout << endl;
  80. cout<<endl;
  81. system("pause");
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement