Pagini recente » Cod sursa (job #2340595) | Cod sursa (job #3257731) | Cod sursa (job #2944871) | Cod sursa (job #1288920) | Cod sursa (job #3252080)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[500001];
void interclasare(int a[], int s, int d)
{
int aux[d + s], i, j, mij, poz;
mij = (s + d) / 2;
i = s;
j = mij + 1;
poz = 0;
while(i <= mij && j <= d){
if(a[i] < a[j]){
aux[poz] = a[i];
i++;
poz++;
}
else if(a[i] > a[j]){
aux[poz] = a[j];
j++;
poz++;
}
else{
aux[poz] = a[i];
i++;
poz++;
}
}
if(i <= mij){
for(; i <= mij; i++){
aux[poz++] = a[i];
}
}else if(j <= d){
for(; j <= d; j++){
aux[poz++] = a[j];
}
}
for(i = 0; i < poz; i++){
a[i + s] = aux[i];
}
}
void mergesort(int v[], int s, int d){
int mij = (s + d) / 2, aux;
if(d - s == 1){
aux = v[s];
v[s] = v[d];
v[d] = aux;
}else if(d > s){
mergesort(v, s, mij);
mergesort(v, mij + 1, d);
interclasare(v, s, d);
}
}
int main()
{
int i, n;
fin >> n;
for(i = 0; i < n; i++){
fin >> v[i];
}
mergesort(v, 0, n - 1);
for(i = 0; i < n; i++){
fout << v[i] << " ";
}
return 0;
}