Cod sursa(job #1310464)

Utilizator SorinmocanuFMI Sorin Mocanu Sorinmocanu Data 6 ianuarie 2015 21:26:46
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[500000],n;

void sort(int p, int q)
{
    int m;
    if(a[p]>a[q])
    {m=a[p]; a[p]=a[q]; a[q]=m;}
}

void interc(int p, int q, int m)
{
    int b[500000], i, j, k,l;
    i=p; j=m+1; k=1;

    while(i<=m && j<=q)
        if(a[i]<=a[j])
            {b[k]=a[i]; i++;  k++;}
        else
            {b[k]=a[j]; j++; k++;}
    if(i<=m)
        for(l=i;l<=m;l++)
            {b[k]=a[l]; k++;}
    else
        for(l=j;l<=q;l++)
            {b[k]=a[l]; k++;}
    k=1;
    for(i=p;i<=q;i++)
    {a[i]=b[k]; k++;}
}


void divimp (int p, int q)
{
    int m;
    if((q-p)<=1) sort(p,q);
    else
    {
        m=(p+q)/2;
        divimp(p,m);
        divimp(m+1,q);
        interc(p,q,m);
    }
}

int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int i;
    f>>n;
    for(i=1;i<=n;i++)
        f>>a[i];
    divimp(1,n);
    for(i=1;i<=n;i++)
        g<<a[i]<<" ";

    f.close();
    g.close();
    return 0;
    }