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