Pagini recente » Cod sursa (job #2999403) | Cod sursa (job #969466) | Cod sursa (job #1022442) | Cod sursa (job #1070406) | Cod sursa (job #1190820)
#include <fstream>
#define DIM 500010
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[DIM];
int w[DIM];
int n,i;
void interclaseaza (int p, int m, int u) {
// consider sortata secventa de la p la m
// consider sortata secventa de la m+1 la u
// interclasez pe cele 2
int k = p-1;
int i = p;
int j = m+1;
while (i<=m && j<=u) {
if (v[i] < v[j]) {
k++;
w[k] = v[i];
i++;
} else {
k++;
w[k] = v[j];
j++;
}
}
for (;i<=m;i++)
w[++k] = v[i];
for (;j<=u;j++)
w[++k] = v[j];
for (i=p;i<=u;i++)
v[i] = w[i];
}
void sorteaza(int p, int u) {
if (p < u) {
int mid = (p+u)/2;
sorteaza(p, mid);
sorteaza(mid+1,u);
interclaseaza(p,mid,u);
}
}
int main() {
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
sorteaza(1,n);
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}