Pagini recente » Cod sursa (job #3188626) | Cod sursa (job #1150887) | Cod sursa (job #3258475) | Cod sursa (job #3165754) | Cod sursa (job #2606763)
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
ifstream r("algsort.in");
ofstream w("algsort.out");
int v[500003];
void unire(int a, int mij, int b){
int n1 = mij - a + 1, n2 = b - mij, g[n1], h[n2];
for(int i=0;i<n1;i++){
g[i]=v[a+i];
}
for(int i=0;i<n2;i++){
h[i]=v[mij+i+1];
}
int i=0, j=0, k=a;
while(i<n1 && j<n2){
if(g[i]<=h[j]){
v[k]=g[i];
i++;
}
else{
v[k]=h[j];
j++;
}
k++;
}
while (i < n1)
{
v[k] = g[i];
i++;
k++;
}
while (j < n2)
{
v[k] = h[j];
j++;
k++;
}
}
void mergesort(int a, int b)
{
if(a<b){
int mij=(a+b)/2;
mergesort(a, mij);
mergesort(mij+1, b);
unire(a, mij, b);
}
}
int main()
{
int n;
r>>n;
for(int i=0; i<n; i++)
{
r>>v[i];
}
mergesort(0, n-1);
for(int i=0; i<n; i++)
{
w<<v[i]<<" ";
}
return 0;
}