Advertisement
NS2A2

Merge Sort - Chia để trị

Dec 8th, 2021
993
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4.  
  5. void merge(int arr[], int l, int m, int r)
  6. {
  7.     int i, j, k;
  8.     int n1 = m - l + 1;
  9.     int n2 =  r - m;
  10.  
  11.     int L[n1], R[n2];
  12.  
  13.     for (i = 0; i < n1; i++)
  14.         L[i] = arr[l + i];
  15.     for (j = 0; j < n2; j++)
  16.         R[j] = arr[m + 1+ j];
  17.  
  18.     i = 0;
  19.     j = 0;
  20.     k = l;
  21.     while (i < n1 && j < n2)
  22.     {
  23.         if (L[i] >= R[j])
  24.         {
  25.             arr[k] = L[i];
  26.             i++;
  27.         }
  28.         else
  29.         {
  30.             arr[k] = R[j];
  31.             j++;
  32.         }
  33.         k++;
  34.     }
  35.  
  36.     while (i < n1)
  37.     {
  38.         arr[k] = L[i];
  39.         i++;
  40.         k++;
  41.     }
  42.  
  43.     while (j < n2)
  44.     {
  45.         arr[k] = R[j];
  46.         j++;
  47.         k++;
  48.     }
  49. }
  50.  
  51. void mergeSort(int arr[], int l, int r)
  52. {
  53.     if (l < r)
  54.     {
  55.         int m = l+(r-l)/2;
  56.  
  57.         mergeSort(arr, l, m);
  58.         mergeSort(arr, m+1, r);
  59.  
  60.         merge(arr, l, m, r);
  61.     }
  62. }
  63.  
  64. void printArray(int A[], int size)
  65. {
  66.     for (int i = 0; i < size; i++)
  67.         cout << A[i] << " ";
  68. }
  69.  
  70. int main()
  71. {
  72.     int n;
  73.     cout<<"Nhap so phan tu cua mang: ";
  74.     cin>>n;
  75.     int arr[n];
  76.     cout<<"Nhap gia tri cua cac phan tu cua mang: ";
  77.     for (int i=0;i<n;i++)
  78.     {
  79.         cin>>arr[i];
  80.     }
  81.  
  82.     cout << "Given array is \n";
  83.     printArray(arr, n);
  84.  
  85.     mergeSort(arr, 0, n - 1);
  86.  
  87.     cout << "\nSorted array is \n";
  88.     printArray(arr, n);
  89.     return 0;
  90. }
  91.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement