Pagini recente » Cod sursa (job #1724384) | Cod sursa (job #314834) | Cod sursa (job #478150) | Cod sursa (job #2380719) | Cod sursa (job #1239676)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500010], w[500010];
int n, i;
void interclaseaza(int st, int m, int dr) {
int i = st;
int j = m+1;
int k = st-1;
while (i<=m && j<=dr)
if (v[i]<v[j])
w[++k] = v[i++];
else
w[++k] = v[j++];
for (;i<=m;i++)
w[++k] = v[i];
for (;j<=dr;j++)
w[++k] = v[j];
for (i=st;i<=dr;i++)
v[i] = w[i];
}
void sorteaza(int st, int dr) {
if (st < dr) {
int m = (st+dr)/2;
sorteaza(st, m);
sorteaza(m+1, dr);
interclaseaza(st, m, dr);
// functia pri,este sortata secventa din v de la st la m si tot sortata secventa din v de la m+1 la dr si le interclaseaza in v in aceeasi zona st,dr
}
}
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;
}