Cod sursa(job #1310459)

Utilizator SorinmocanuFMI Sorin Mocanu Sorinmocanu Data 6 ianuarie 2015 21:17:19
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[1500000],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[100], i, j, k;
    i=p; j=m+1; k=1;

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

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


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;
    }