Pagini recente » Cod sursa (job #2507346) | Cod sursa (job #1308578) | Cod sursa (job #1406304) | Cod sursa (job #307149) | Cod sursa (job #3038454)
#include <fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int i, j, n, m, st, dr, mid, k;
int v[500002], w[500002];
void interclasare(int st, int mid, int dr){
int i=st;
int j=mid+1;
int k=0;
while(i<=mid && j<=dr){
if(v[i]==v[j]){
w[++k]=v[i];
w[++k]=v[j];
i++;
j++;
}
else if(v[i]<v[j]){
w[++k]=v[i];
i++;
}
else{
w[++k]=v[j];
j++;
}
}
while(i<=mid)
w[++k]=v[i], i++;
while(j<=dr)
w[++k]=v[j], j++;
for(int i=1;i<=k;i++)
v[st+i-1]=w[i];
}
void f(int st, int dr){
if(st>=dr)
return ;
int mid=(st+dr)/2;
f(st, mid);
f(mid+1, dr);
interclasare(st, mid, dr);
}
int main() {
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
f(1, n);
for(i=1;i<=n;i++)
cout<<v[i]<<" ";
}