Pagini recente » Cod sursa (job #763482) | Cod sursa (job #2333310) | Cod sursa (job #316476) | Cod sursa (job #442560) | Cod sursa (job #3123453)
#include <iostream>
#include <fstream>
using namespace std;
int v[500001];
int r[500001];
int n;
ifstream in("algsort.in");
ofstream out("algsort.out");
void interclasare(int st, int dr) {
int i = st;
int k = st;
int m = (st+dr)/2;
int j = m + 1;
while(i <= m && j <= dr) {
if(v[i] <= v[j]) {
r[k] = v[i];
k++;
i++;
} else {
r[k] = v[j];
k++;
j++;
}
}
while(i <= m) {
r[k] = v[i];
k++;
i++;
}
while(j <= dr) {
r[k] = v[j];
k++;
j++;
}
// copiem in v
for(i = st; i <= dr; i++) {
v[i] = r[i];
}
}
void divide(int st, int dr) {
if(st == dr) {
return;
}
int m = (st + dr) / 2;
divide(st, m);
divide(m + 1, dr);
interclasare(st, dr);
}
int main()
{
int i;
in >> n; // nr elemente vector
// citire elemente vector
for(i = 1; i <= n; i++) {
in >> v[i];
}
divide(1, n);
for(i = 1; i <= n; i++) {
out << v[i] << " ";
}
return 0;
}