Cod sursa(job #1310499)

Utilizator alinmocanu95FMI Alin Mocanu alinmocanu95 Data 6 ianuarie 2015 22:03:13
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.24 kb
#include<iostream>
#include<fstream>
using namespace std;
int n;
long a[500000];

void sort(int p, int q, long a[500000])
{
    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, long a[100])
{
    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, long a[100])
{
    int m;
    if((q-p)<=1) sort(p,q,a);
    else
    {
        m=(p+q)/2;
        divimp(p,m,a);
        divimp(m+1,q,a);
        interc(p,q,m,a);
    }
}

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,a);
    for(i=1;i<=n;i++)
        g<<a[i]<<" ";
        f.close();
        g.close();
        return 0;
    }