fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void Merging(int L, int Mid, int H, int ara[])
  5. {
  6. int m = Mid-L+1;
  7. int n = H-Mid;
  8. int A[m], B[n];
  9.  
  10. for(int i = 0; i < m; i++)
  11. {
  12. A[i] = ara[L+i];
  13. }
  14. for(int j = 0; j < n; j++)
  15. {
  16. B[j] = ara[Mid+1+j];
  17. }
  18.  
  19. int i = 0, j = 0, k = L;
  20. while( i < m && j < n)
  21. {
  22. if(A[i] < B[j])
  23. {
  24. ara[k] = A[i];
  25. i++;
  26. k++;
  27. }
  28. else
  29. {
  30. ara[k] = B[j];
  31. k++;
  32. j++;
  33. }
  34. }
  35.  
  36. for( ; i < m; i++)
  37. {
  38. ara[k] = A[i];
  39. k++;
  40. }
  41. for( ; j < n; j++)
  42. {
  43. ara[k] = B[j];
  44. k++;
  45. }
  46. }
  47.  
  48. void MergeSort(int L, int H, int ara[])
  49. {
  50. if(L < H)
  51. {
  52. int Mid = (L+H)/2;
  53. MergeSort(L, Mid, ara);
  54. MergeSort(Mid+1, H, ara);
  55. Merging(L, Mid, H, ara);
  56. }
  57. }
  58.  
  59. int main()
  60. {
  61. int n;
  62. cin>>n;
  63. int ara[n];
  64. for(int i = 0; i < n; i++)
  65. {
  66. cin>>ara[i];
  67. }
  68.  
  69. MergeSort(0, n-1, ara);
  70.  
  71. for(int i = 0; i < n; i++)
  72. {
  73. cout<<ara[i]<<" ";
  74. }
  75. }
  76.  
Success #stdin #stdout 0.01s 5312KB
stdin
8                                                                                9 3 7 5 6 4 2 8  
stdout
2 3 4 5 6 7 8 9