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