1. #include <iostream>
  2. using namespace std;
  3.  
  4.  
  5. int a[50];
  6. void merge_sort(int low,int high)
  7. {
  8. int mid;
  9. if(low<high)
  10. {
  11. mid=(low+high)/3;
  12. merge_sort(low,mid);
  13. low = mid;
  14. mid=(mid+high)/2;
  15. merge_sort ( low+1, mid );
  16. merge_sort(mid+1,high);
  17. merge(low,mid,high);
  18. }
  19. }
  20. void merge(int low,int mid,int high)
  21. {
  22. int h,i,j,b[50],k;
  23. h=low;
  24. i=low;
  25. j=mid+1;
  26.  
  27. while((h<=mid)&&(j<=high))
  28. {
  29. if(a[h]<=a[j])
  30. {
  31. b[i]=a[h];
  32. h++;
  33. }
  34. else
  35. {
  36. b[i]=a[j];
  37. j++;
  38. }
  39. i++;
  40. }
  41. if(h>mid)
  42. {
  43. for(k=j;k<=high;k++)
  44. {
  45. b[i]=a[k];
  46. i++;
  47. }
  48. }
  49. else
  50. {
  51. for(k=h;k<=mid;k++)
  52. {
  53. b[i]=a[k];
  54. i++;
  55. }
  56. }
  57. for(k=low;k<=high;k++) a[k]=b[k];
  58. }
  59. int main()
  60. {
  61. int num,i;
  62.  
  63.  
  64. cout<<"Please Enter THE NUMBER OF ELEMENTS you want to sort [THEN PRESS ENTER]:"<<endl;
  65. cin>>num;
  66. cout<<endl;
  67. cout<<"Now, Please Enter the ( "<< num <<" ) numbers (ELEMENTS) [THEN PRESS ENTER]:"<<endl;
  68. for(i=1;i<=num;i++)
  69. {
  70. cin>>a[i] ;
  71. }
  72. merge_sort(1,num);
  73. cout<<endl;
  74. cout<<"So, the sorted list (using MERGE SORT) will be :"<<endl;
  75. cout<<endl<<endl;
  76.  
  77. for(i=1;i<=num;i++)
  78. cout<<a[i]<<" ";
  79.  
  80.  
  81. return 0;
  82.  
  83. }