Cod sursa(job #1019866)

Utilizator tudor.rotarusTudor Rotarus tudor.rotarus Data 1 noiembrie 2013 00:52:12
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

long a[500000],b[500000];
int n;

void merge(int p,int q,int r)
{int i,j,k;
k=1;
i=p;
j=q+1;

while(i<=q && j<=r)
{
    if(a[i]<a[j])
    {
        b[k]=a[i];
        k++;
        i++;
    }
    else
    {
        b[k]=a[j];
        k++;
        j++;
    }
}
while(i<=q)
{
    b[k]=a[i];
    k++;
    i++;
}
while(j<=r)
{
    b[k]=a[j];
    k++;
    j++;
}
k--;
for(i=r;i>=p;i--)
{
    a[i]=b[k];
    k--;
}
}

void mergesort(int p,int q)
{int m;

if(p<q)
{
    m=(p+q)/2;
    mergesort(p,m);
    mergesort(m+1,q);
    merge(p,m,q);
}

}

int main()
{int i;

f>>n;
for(i=1;i<=n;i++)
    f>>a[i];

mergesort(1,n);

for(i=1;i<=n;i++)
    g<<a[i]<<" ";

g.close();

return 0;
}