Pagini recente » Cod sursa (job #1756327) | Cod sursa (job #858662) | Cod sursa (job #948494) | Cod sursa (job #1151660) | Cod sursa (job #2268278)
#include <fstream>// MERGESORT PENTRU LABORATOR ASD
#define NMAX 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[NMAX], i, N;
void Merge(int *v, int st1, int dr1, int st2, int dr2) {
int b[NMAX], c = st1, st = st1, dr = dr2;
while(st1 <= dr1 && st2 <= dr2) {
if(a[st1] < a[st2]) b[c++] = a[st1++];
else b[c++] = a[st2++];
}
while(st1 <= dr1) b[c++] = a[st1++];
while(st2 <= dr2) b[c++] = a[st2++];
for(int i = st; i <= dr; i++) a[i] = b[i];
}
void MergeS(int *v, int st,int dr) {
if(st == dr) return;
int mid = st + (dr - st) / 2;
MergeS(v, st, mid);
MergeS(v, mid + 1, dr);
Merge(v, st, mid, mid+1, dr);
}
int main() {
f>>N;
for(i = 1; i <= N; i++)
f>>a[i];
MergeS(a, 1, N);
for(i = 1; i <= N; i++)
g<<a[i]<<' ';
return 0;
}