Pagini recente » Cod sursa (job #652715) | Cod sursa (job #1513177) | Cod sursa (job #1472678) | Cod sursa (job #2642910) | Cod sursa (job #2612035)
#include <iostream>
#include <fstream>
void interclasare(int a[], int st, int dr){
int mijloc = (st + dr) / 2;
int i = st;
int j = mijloc + 1;
int aux = 0;
int size = dr - st + 1;
int arr[size];
while ( i <= mijloc and j <= dr) {
if (a[i] < a[j]) {
arr[aux] = a [i];
aux++;
i++;
} else {
arr[aux] = a[j];
aux++;
j++;
}
}
while (i <= mijloc) {
arr[aux] = a[i];
aux++;
i++;
}
while (j <= dr) {
arr[aux] = a[j];
aux++;
j++;
}
for (int k = 0; k < aux; ++k) {
a[st+k] = arr[k];
}
}
void mergesort(int a[], int st, int dr){
if (st == dr)
return;
int mijloc = (st + dr) / 2;
mergesort(a, st, mijloc);
mergesort(a, mijloc + 1, dr);
interclasare(a, st, dr);
}
int main() {
std :: ifstream fin("algsort.in");
std :: ofstream fout ( "algsort.out");
int n;
int vt[500005];
fin >> n;
for (int i = 0; i < n; ++i) {
fin >> vt[i];
}
mergesort(vt, 0, n-1);
for (int j = 0; j < n; ++j) {
fout << vt[j] << " ";
}
return 0;
}