Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- void Merge(int *A,int p,int q,int r)
- {
- int n1=q-p+1;
- int n2=r-q;
- int * L=new int[n1]; ///1 base indexing from here
- int * R=new int[n2];
- for(int i=1;i<=n1;i++)
- {
- L[i]=A[p+i-1];
- }
- for(int j=1;j<=n2;j++)
- {
- R[j]=A[q+j];
- }
- L[n1+1]=9999999;
- R[n2+1]=9999999;
- int i=1;
- int j=1;
- for(int k=p;k<=r;k++)
- {
- if(L[i]<=R[j])
- {
- A[k]=L[i];
- i++;
- }
- else
- {
- A[k]=R[j];
- j++;
- }
- }
- }
- void Merge_sort(int* A,int p,int r)
- {
- if(p<r)
- {
- int q=int((p+r)/2);
- Merge_sort(A,p,q);
- Merge_sort(A,q+1,r);
- Merge(A,p,q,r);
- }
- }
- int main()
- {
- int A[]={20,30,10,40,50,5,100,80};
- int z=sizeof(A)/sizeof(A[0]);
- Merge_sort(A,0,7);
- for(int i=0;i<z;i++)
- cout<<A[i]<<",";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement