Pagini recente » Cod sursa (job #901016) | Cod sursa (job #2882427) | Cod sursa (job #315911) | Cod sursa (job #1136366) | Cod sursa (job #1212320)
#include <iostream>
#include <fstream>
using namespace std;
int v[1000000], nr;
int n[1000000];
void interclasare(int i, int j, int k, int l) {
int elem = i, ic = i;
while(i <= j && k <= l) {
if(v[i] < v[k]) {
n[elem++] = v[i];
++i;
}
else {
n[elem++] = v[k];
++k;
}
}
while(i <= j) {
n[elem++] = v[i];
++i;
}
while(k <= l) {
n[elem++] = v[k];
++k;
}
for(int a = ic; a <= l; ++a)
v[a] = n[a];
}
void merge_sort(int i, int j) {
if(j == i) return;
merge_sort(i, (i + j)/2);
merge_sort((j + i)/2 + 1, j);
interclasare(i, (j + i)/2, (j + i)/2 + 1, j);
}
int main()
{
ifstream cin("algsort.in");
ofstream cout("algsort.out");
cin >> nr;
for(int i = 1; i <= nr; ++i)
cin >> v[i];
merge_sort(1, nr);
for(int i = 1; i <= nr; ++i)
cout << v[i] << ' ';
return 0;
}