Cod sursa(job #1651409)

Utilizator NecoaraGabrielNecoara Gabriel-Stefan NecoaraGabriel Data 13 martie 2016 11:20:28
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb

#include<iostream>
#include<fstream>
#include<conio.h>
using namespace std;


void MERGE(long long a[],long int p,long int mid,long int q)
{
    long int i,j,n1,n2;
    cout<<"Entered merge"<<endl;
    n1=mid-p+1;
    n2=q-mid;

    long long L[n1+1],R[n2+1];

    for(i=1;i<=n1;i++)
        L[i]=a[p+i-1];
    for(j=1;j<=n2;j++)
        R[j]=a[mid+j];

  L[n1+1]=1000;
  R[n2+1]=1000;
    i=j=1;

    for(long int k=p;k<=q;k++)
        if(L[i]<=R[j])
            {
            a[k]=L[i];
            i++;
            }
        else{a[k]=R[j];
            j++;
        }

}

void merge_sort(long long a[],long int p,long int q)
{int mid;
    if(p<q)
    {
        mid=(p+q)/2;
        merge_sort(a,p,mid);
        merge_sort(a,mid+1,q);
        MERGE(a,p,mid,q);
    }
}

void afisare(int a[],int n)
{
    cout<<endl;
    for(long int i=1;i<=n;i++)
    cout<<a[i]<<" ";
}
int main()
{
    long int n,i;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;

long long x[n];

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

    //afisare(x,n);
    merge_sort(x,1,n);
for(i=1;i<=n;i++)
    g<<x[i]<<" ";
//afisare(x,n);

    return 0;
}