Advertisement
Guest User

Untitled

a guest
Dec 11th, 2018
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale>
  3.  
  4. using namespace std;
  5.  
  6. void Merge ( int a[], int left, int mid, int right ) {
  7. int i, j, k;
  8. int n1 = mid - left + 1;
  9. int n2 = right - mid;
  10.  
  11. int L[n1], R[n2];
  12.  
  13. for ( i = 0; i < n1; i++ )
  14. { L[i] = a[left + i]; }
  15.  
  16. for ( j = 0; j < n2; j++ )
  17. { R[j] = a[mid + 1 + j]; }
  18.  
  19. i = 0;
  20. j = 0;
  21. k = left;
  22.  
  23. while ( i < n1 && j < n2 ) {
  24. if ( L[i] <= R[j] ) {
  25. a[k] = L[i];
  26. i++;
  27. }
  28. else {
  29. a[k] = R[j];
  30. j++;
  31. }
  32.  
  33. k++;
  34. }
  35.  
  36. while ( i < n1 ) {
  37. a[k] = L[i];
  38. i++;
  39. k++;
  40. }
  41.  
  42. while ( j < n2 ) {
  43. a[k] = R[j];
  44. j++;
  45. k++;
  46. }
  47. }
  48.  
  49. void MergeSort ( int a[], int left, int right ) {
  50. if ( left < right ) {
  51. int mid = left + ( right - left ) / 2;
  52.  
  53. MergeSort ( a, left, mid );
  54. MergeSort ( a, mid + 1, right );
  55.  
  56. Merge ( a, left, mid, right );
  57. }
  58. }
  59.  
  60.  
  61. int main() {
  62. setlocale(LC_ALL, "Rus");
  63. int n;
  64. cout << "¬ведите размер массива: ";
  65. cin >> n;
  66. int a[n];
  67.  
  68. for ( int i = 0; i < n; ++i ) {
  69. cin >> a[i];
  70. }
  71.  
  72. cout << "\n\n»сходный массив: \n";
  73.  
  74. for ( int i = 0; i < n; ++i ) {
  75. cout << a[i] << " ";
  76. }
  77.  
  78. MergeSort ( a, 0, n - 1 );
  79.  
  80. cout << "\n\n—ортированный массив: \n" ;
  81.  
  82. for ( int i = 0; i < n; ++i ) {
  83. cout << a[i] << " ";
  84. }
  85.  
  86. return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement