fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void Merge(int arr[],int start,int mid, int end)
  5. {
  6.  
  7. int n1=mid-start+1; /// size of left array
  8. int n2=end-mid; /// size of right array
  9. int L[n1],R[n2];
  10.  
  11.  
  12.  
  13. for(int i=0; i<n1; i++)
  14. {
  15.  
  16. L[i]=arr[start+i];
  17. }
  18.  
  19. for(int i=0; i<n2; i++)
  20. {
  21.  
  22. R[i]=arr[mid+1+i];
  23. }
  24.  
  25. int i=0,j=0,k=start;
  26. while(i<n1 && j<n2)
  27. {
  28. if(L[i]<=R[j])
  29. {
  30. arr[k]=L[i];
  31. i++;
  32. k++;
  33. }
  34. else
  35. {
  36. arr[k]=R[j];
  37. j++;
  38. k++;
  39. }
  40. }
  41. while(j<n2)
  42. {
  43. arr[k]=R[j];
  44. j++;
  45. k++;
  46. }
  47. while(i<n1)
  48. {
  49. arr[k]=L[i];
  50. i++;
  51. k++;
  52. }
  53.  
  54.  
  55. }
  56.  
  57. void mergeSort(int arr[], int start, int end)
  58. {
  59.  
  60.  
  61. if (start<end)
  62. {
  63. int mid=(start+end)/2;
  64. mergeSort(arr,start,mid);
  65. mergeSort (arr, mid+1,end);
  66. Merge(arr,start,mid,end);
  67. }
  68. }
  69.  
  70. int main()
  71. {
  72.  
  73. int arr[]= {21,3,54,-45,78,2,-1};
  74. int n= sizeof(arr)/sizeof(arr[0]);
  75.  
  76. mergeSort(arr,0,n-1);
  77.  
  78. cout<<"after sorting in descendig order: ";
  79. for(int i=n-1; i>=0; i--)
  80. {
  81. cout<<arr[i]<<" ";
  82. }
  83. cout<<endl;
  84. cout<<"after sorting in ascending order: ";
  85. for(int i=0; i<n; i++)
  86. {
  87. cout<<arr[i]<<" ";
  88. }
  89. return 0;
  90. }
  91.  
Success #stdin #stdout 0.01s 5316KB
stdin
Standard input is empty
stdout
after sorting in descendig order: 78 54 21 3 2 -1 -45 
after sorting in ascending order: -45 -1 2 3 21 54 78