fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. void merge(int A[], int p, int q, int r) {
  5. int n1 = q - p + 1;
  6. int n2 = r - q;
  7. int L[50], R[50];
  8.  
  9.  
  10. for (int i = 0; i < n1; i++)
  11. L[i] = A[p + i];
  12. for (int j = 0; j < n2; j++)
  13. R[j] = A[q + 1 + j];
  14.  
  15. int i = 0, j = 0, k = p;
  16.  
  17.  
  18. while (i < n1 && j < n2) {
  19. if (L[i] <= R[j]) {
  20. A[k] = L[i];
  21. i++;
  22. } else {
  23. A[k] = R[j];
  24. j++;
  25. }
  26. k++;
  27. }
  28.  
  29.  
  30. while (i < n1) {
  31. A[k] = L[i];
  32. i++;
  33. k++;
  34. }
  35.  
  36.  
  37. while (j < n2) {
  38. A[k] = R[j];
  39. j++;
  40. k++;
  41. }
  42. }
  43.  
  44. void mergeSort(int A[], int p, int r) {
  45. if (p < r) {
  46. int q = (p + r) / 2;
  47. mergeSort(A, p, q);
  48. mergeSort(A, q + 1, r);
  49. merge(A, p, q, r);
  50. }
  51. }
  52.  
  53. void printArray(int A[], int n) {
  54. for (int i = 0; i < n; i++)
  55. cout << A[i] << " ";
  56. cout << endl;
  57. }
  58.  
  59. int main() {
  60. int A[] = {38, 27, 43, 3, 9, 82, 10};
  61. int n = sizeof(A) / sizeof(A[0]);
  62.  
  63. cout << "Original Array: ";
  64. printArray(A, n);
  65.  
  66. mergeSort(A, 0, n - 1);
  67.  
  68. cout << "Sorted Array (Merge Sort): ";
  69. printArray(A, n);
  70.  
  71. return 0;
  72. }
  73.  
Success #stdin #stdout 0s 5316KB
stdin
Standard input is empty
stdout
Original Array: 38 27 43 3 9 82 10 
Sorted Array (Merge Sort): 3 9 10 27 38 43 82