fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void merge(int arr[], int l, int m, int r) {
  5. int n1 = m - l + 1;
  6. int n2 = r - m;
  7.  
  8. int L[n1], R[n2];
  9. for (int i = 0; i < n1; i++) L[i] = arr[l + i];
  10. for (int j = 0; j < n2; j++) R[j] = arr[m + 1 + j];
  11.  
  12. int i = 0, j = 0, k = l;
  13. while (i < n1 && j < n2) {
  14. if (L[i] <= R[j]) arr[k++] = L[i++];
  15. else arr[k++] = R[j++];
  16. }
  17.  
  18. while (i < n1) arr[k++] = L[i++];
  19. while (j < n2) arr[k++] = R[j++];
  20. }
  21.  
  22. void mergeSort(int arr[], int l, int r) {
  23. if (l < r) {
  24. int m = l + (r - l) / 2;
  25. mergeSort(arr, l, m);
  26. mergeSort(arr, m + 1, r);
  27. merge(arr, l, m, r);
  28. }
  29. }
  30.  
  31. int main() {
  32. int arr[] = {38, 27, 43, 3, 9, 82, 10};
  33. int n = sizeof(arr) / sizeof(arr[0]);
  34.  
  35. mergeSort(arr, 0, n - 1);
  36.  
  37. for (int i = 0; i < n; i++)
  38. cout << arr[i] << " ";
  39. cout << endl;
  40.  
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0.01s 5328KB
stdin
Standard input is empty
stdout
3 9 10 27 38 43 82