Pagini recente » Cod sursa (job #2514627) | Cod sursa (job #405293) | Cod sursa (job #239882) | Cod sursa (job #838606) | Cod sursa (job #2369519)
#include <fstream>
using namespace std;
int n, v[500001];
void interclasare (int st, int m, int dr) {
int y[500001];
int k = st-1;
int i = st, j = m+1;
while (i<=m && j<=dr) {
if (v[i]<v[j]) y[++k] = v[i], i++;
else y[++k] = v[j], j++;
}
while (i<=m)
y[++k] = v[i], i++;
while (j<=dr)
y[++k] = v[j], j++;
for (i=st;i<=dr;i++) v[i] = y[i];
}
void merge_sort (int st, int dr) {
if (st<dr) {
int m = (st+dr)/2;
merge_sort(st,m);
merge_sort(m+1,dr);
interclasare(st,m,dr);
}
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
fin >> n;
for (int i=1;i<=n;i++) fin >> v[i];
merge_sort(1,n);
for (int i=1;i<=n;i++) fout << v[i] << " ";
return 0;
}