Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- const int N=100000;
- int a[N],b[N],n;
- void citire(){int i;cin>>n;
- for(i=1;i<=n;++i)cin>>a[i];}
- void Mergesort(int st,int dr){
- int m,i,j,k;
- if(st<dr){m=(st+dr)/2;
- Mergesort(st,m);
- Mergesort(m+1,dr);
- i=st;j=m+1;k=st-1;
- while(i<=m&&j<=dr)
- if(a[i]<a[j])b[++k]=a[i++];
- else b[++k]=a[j++];
- while(i<=m)b[++k]=a[i++];
- while(j<=dr)b[++k]=a[j++];
- for(i=st;i<=dr;++i)a[i]=b[i];}}
- void afisare(){int i;
- for(i=1;i<=n;++i)cout<<a[i]<<" ";}
- int main(){citire();
- Mergesort(1,n);
- afisare();
- return 0;}
- #include <iostream>
- using namespace std;
- const int N=100000;
- int a[N],b[N],n;
- void citire(){int i;cin>>n;
- for(i=1;i<=n;++i)cin>>a[i];}
- void Mergesort(int st,int dr){
- int m,i,j,k;
- if(st<dr){m=(st+dr)/2;
- Mergesort(st,m);
- Mergesort(m+1,dr);
- i=st;j=m+1;k=st-1;
- while(i<=m&&j<=dr)
- if(a[i]<a[j])b[++k]=a[i++];
- else b[++k]=a[j++];
- while(i<=m)b[++k]=a[i++];
- while(j<=dr)b[++k]=a[j++];
- for(i=st;i<=dr;++i)a[i]=b[i];}}
- void afisare(){int i;
- for(i=1;i<=n;++i)cout<<a[i]<<" ";}
- int main(){citire();
- Mergesort(1,n);
- afisare();
- return 0;}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement