al__nasim

MERGE_SORT

Nov 23rd, 2016
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.92 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. void Merge(int A[],int p,int q, int r){
  5. int i,j,k;
  6. int n1= q-p+1;
  7. int n2= r-q;
  8. int L[n1+1];int R[n2+1];
  9. for(i=1;i<=n1;i++){
  10. L[i]=A[p+i-1];
  11. }
  12. for(j=1;j<=n1;j++){
  13. R[i]=A[q+j];
  14. }
  15. L[n1+1]=999999;
  16. R[n2+1]=999999;
  17. i=1;j=1;
  18. for(k=p;k<=r;k++){
  19. if(L[i]<=R[j]){
  20. A[k]=L[i];
  21. i++;
  22. }
  23. else{
  24. A[k]=R[j];
  25. j++;
  26. }
  27. }
  28.  
  29. }
  30.  
  31. void MergeSort(int A[],int p, int r){
  32. int q;
  33. if(p<r){
  34. q=(p+r)/2;
  35. MergeSort(A,p,q);
  36. MergeSort(A,q+1,r);
  37. Merge(A,p,q,r);
  38. }
  39. }
  40.  
  41. int main()
  42. {
  43.  
  44. int n,p,r,i;
  45. cin>>n;
  46. int A[n];
  47. for(i=0;i<n;i++)
  48. {
  49. cin>>A[i];
  50. }
  51. p=0;
  52. r=n-1;
  53. MergeSort(A,p,r);
  54. for(i=0;i<n;i++)
  55. {
  56. cout<<A[i]<<" ";
  57. }
  58. return 0;
  59. }
Add Comment
Please, Sign In to add comment