Pagini recente » Cod sursa (job #1750464) | Cod sursa (job #362227) | Cod sursa (job #237890) | Istoria paginii runda/cei_mai_mari_olimpicari_runda_3/clasament | Cod sursa (job #1542648)
#include <fstream>
#include <iostream>
using namespace std;
int v[500000], aux[500000];
void interclasare(int v[], int st, int dr) {
int i, j, k, m = (st + dr) / 2;
i = k = st;
j = m + 1;
while(i <= m && j <= dr)
if(v[i] <= v[j])
aux[k++] = v[i++];
else
aux[k++] = v[j++];
while(i <= m)
aux[k++] = v[i++];
while(j <= dr)
aux[k++] = v[j++];
for(k = st; k <= dr; k++)
v[k] = aux[k];
}
void sortare(int v[], int st, int dr) {
if(st == dr)
return;
int m = (st + dr) / 2;
sortare(v, st, m);
sortare(v, m + 1, dr);
interclasare(v, st, dr);
}
int main() {
ifstream in("algsort.in");
ofstream out("algsort.out");
if(!in || ! out)
return 1;
int n;
in >> n;
for(int i = 0; i < n; i++)
in >> v[i];
sortare(v, 0, n - 1);
for(int i = 0; i < n; i++)
out << v[i] << " ";
in.close();
out.close();
return 0;
}