fork download
  1.  
  2. #include<bits/stdc++.h>
  3. using namespace std;
  4.  
  5. void merge(int arr[],int l,int mid,int r){
  6. int n1= mid-l+1;
  7. int n2= r-mid;
  8.  
  9. //temp arrays
  10. int a[n1];
  11. int b[n2];
  12.  
  13. //array ke elements ko 2 temp arrays mein bhar rhe hai
  14. for (int i = 0; i < n1; i++)
  15. {
  16. a[i]=arr[l+i];
  17.  
  18. }
  19. for (int i = 0; i < n2; i++)
  20. {
  21. b[i]=arr[mid+1+i];
  22.  
  23. }
  24.  
  25. //checing when putting the values backing in the k array
  26. int i=0;
  27. int j=0;
  28. int k=l;
  29. while(i<n1 && j<n2){
  30. if(a[i]<b[j]){
  31. arr[k]=a[i];
  32. k++;
  33. i++;
  34. }
  35. else{
  36. arr[k]=b[j];
  37. k++;
  38. j++;
  39. }
  40. }
  41.  
  42. // for the last one
  43. while(i<n1){
  44. arr[k]=a[i];
  45. k++;
  46. i++;
  47. }
  48. while(j<n2){
  49. arr[k]=b[j];
  50. k++;
  51. j++;
  52. }
  53. }
  54.  
  55. void mergeSort(int arr[],int l,int r){
  56. if(l<r){
  57. int mid=(l+r)/2;
  58. mergeSort(arr,l,mid);
  59. mergeSort(arr,mid+1,r);
  60. merge(arr,l,mid,r);
  61. }
  62. }
  63.  
  64. int main(){
  65. int arr[]={5,4,3,2,1};
  66. mergeSort(arr,0,4);
  67. for (int i = 0; i < 5; i++)
  68. {
  69. cout<<arr[i]<<" ";
  70. }
  71. cout<<endl;
  72. return 0;
  73. }
Success #stdin #stdout 0.01s 5408KB
stdin
Standard input is empty
stdout
1 2 3 4 5