Pagini recente » Cod sursa (job #3167921) | Cod sursa (job #2159165) | Cod sursa (job #1042103) | Cod sursa (job #2979300) | Cod sursa (job #1157839)
#include <fstream>
using namespace std;
int n, v[500003], w[500003], k, i, j;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void interclasare (int st, int mid, int dr) {
int k = st-1;
int i = st;
int j = mid+1;
while (i<=mid && j<=dr)
if (v[i] < v[j]) {
w[++k] = v[i++];
} else {
w[++k] = v[j++];
}
for (;i<=mid;i++)
w[++k] = v[i];
for (;j<=dr;j++)
w[++k] = v[j];
for (i=st; i<=dr; i++)
v[i] = w[i];
}
void sortare(int st, int dr) {
if (st < dr) {
int mid = (st + dr)/2;
sortare(st, mid);
sortare(mid+1, dr);
interclasare(st, mid, dr); //consider sirul de la st la mid sortat, sirul de la mid+1 la dr sortat si trebuie sa le interclasez
}
}
int main() {
fin>>n;
for (i=1;i<=n;i++)
fin>>v[i];
sortare(1, n);
for (i=1;i<=n;i++)
fout<<v[i]<<" ";
return 0;
}