fork download
  1. //Merge Sort using Divide and conquer
  2. #include<cstdio>
  3. #include<iostream>
  4. int a[100];
  5. using namespace std;
  6. void merge_sort(int a[],int low,int mid,int high)
  7. {
  8. int i=low,h=low,j=mid+1;
  9. int b[100];
  10. while(h<=mid && j<=high)
  11. {
  12. if(a[h]<=a[j])
  13. b[i++]=a[h++];
  14. else
  15. b[i++]=a[j++];
  16. }
  17. if(h>mid)
  18. {
  19. for(int k=j;k<=high;k++)
  20. b[i++]=a[k];
  21. }
  22. else
  23. for(int k=h;k<=mid;k++)
  24. b[i++]=a[k];
  25. for(int i=low;i<=high;i++)
  26. {
  27. a[i]=b[i];
  28. //cout<<a[i]<<" ";
  29. }
  30. //cout<<endl;
  31. }
  32. void merge(int a[],int l,int h)
  33. {
  34. if(l<h)
  35. {
  36. int mid=(l+h)/2;
  37. merge(a,l,mid);
  38. merge(a,mid+1,h);
  39. merge_sort(a,l,mid,h);
  40. }
  41. }
  42. int main()
  43. {
  44. int n;
  45. cin>>n;
  46. for(int i=1;i<=n;i++)
  47. cin>>a[i];
  48. merge(a,1,n);
  49. printf("****Merge Sort****\n");
  50. for(int i=1;i<=n;i++)
  51. cout<<a[i]<<" ";
  52. cout<<endl;
  53. }
Success #stdin #stdout 0s 2688KB
stdin
5
6 8 9 1 2
stdout
****Merge Sort****
1 2 6 8 9