Pagini recente » Cod sursa (job #1722684) | Cod sursa (job #1724128) | Cod sursa (job #1818771) | Cod sursa (job #886005) | Cod sursa (job #1943158)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, a[500001],b[500001];
void interclasare(int st, int m, int dr){
int x=st;
int k=1;
int y=m+1;
while(x<=m&&y<=dr){
if(a[x]<a[y]){
b[k]=a[x];
x++;
}
else{
b[k]=a[y];
y++;
}
k++;
}
while(x<=m){
b[k]=a[x];
k++;
x++;
}
while(y<=dr){
b[k]=a[y];
k++;
y++;
}
k--;
int t=st;
int i;
for(i=1;i<=k;i++){
a[t]=b[i];
t++;
}
}
void divimp(int st, int dr){
int mij;
if(dr-st<=1){
if(a[st]>a[dr])
swap(a[st],a[dr]);
}
else{
mij=(st+dr)/2;
divimp(st,mij);
divimp(mij+1,dr);
interclasare(st,mij,dr);
}
}
int main()
{
int i;
f>>n;
for(i=1;i<=n;i++){
f>>a[i];
}
divimp(1,n);
for(i=1;i<=n;i++){
g<<a[i]<<" ";
}
}