Cod sursa(job #2064123)

Utilizator madalin98Gherghe Madalin madalin98 Data 11 noiembrie 2017 20:18:23
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500000];
void merge1(int a[],int p,int mid,int q){
    int i,j,k,st[250000],dr[250000];
    int n1=mid-p+1,n2=q-mid;
    for (i=0;i<n1;i++)
        st[i]=a[p+i];
    for (j=0;j<n2;j++)
        dr[j]=a[mid+1+j];
    i=0;
    j=0;
    k=p;
    while(i<n1&&j<n2){
        if(st[i]<=dr[j]){
            a[k]=st[i];
            ++i;}
        else {a[k]=dr[j];
            ++j;}
        ++k;
    }
    while(i<n1){
        a[k]=st[i];
        ++i;++k;
        }
    while(j<n2){
        a[k]=dr[j];
        ++j;++k;
    }
}
void mergesort(int a[],int p,int q){
  if(p<q){
   int mid=(p+q)/2;
   mergesort(a,p,mid);
   mergesort(a,mid+1,q);
   merge1(a,p,mid,q);
   }
}
int main()
{
    int n,i;
    f>>n;
    for(i=0;i<n;i++)
        f>>a[i];
    mergesort(a,0,n-1);
    for(i=0;i<n;i++)g<<a[i]<<" ";
    return 0;
}