Cod sursa(job #1022940)

Utilizator pabaaaRadu Risnoveanu pabaaa Data 6 noiembrie 2013 11:05:02
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<iostream>
#include<fstream>


using namespace std;

int a[500001],b[500001];

void merge(int stanga,int pivot,int dreapta)
{
    int p=stanga,q=pivot+1,k=stanga-1,i;
    while(p<=pivot && q<=dreapta)
        if(a[p]<a[q])
            b[++k]=a[p++];
        else
            b[++k]=a[q++];
    while(p<=pivot)
        b[++k]=a[p++];
    while(q<=dreapta)
        b[++k]=a[q++];
    for(i=stanga;i<=dreapta;i++)
        a[i]=b[i];
}
 
     
void mergesort (int stanga,int dreapta)
{
    int pivot;
    pivot=(stanga+dreapta)/2;
    if(stanga<dreapta)
    {
        mergesort(stanga,pivot);
        mergesort(pivot+1,dreapta);
        merge(stanga,pivot,dreapta);
    }
}
int main()
{
    int n,i;
    ifstream fcin("algsort.in");
    ofstream fcout("algsort.out");
    fcin>>n;
    for(i=1;i<=n;i++)
        fcin>>a[i];
    mergesort(1,n);
    for(i=1;i<=n;i++)
        fcout<<a[i]<<" ";
    return 0;
}