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