Cod sursa(job #1041677)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 25 noiembrie 2013 23:41:43
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<fstream>
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");

int a[500005];
int i,n;

void intercl(int st,int mid,int dr){
     int aux[500005],k=1;
     int i=st,j=mid+1;
     
     while(i<=mid && j<=dr) 
          if (a[i]<a[j]) aux[k++]=a[i++];
          else aux[k++]=a[j++];
          
     while(i<=mid) aux[k++]=a[i++];
     
     while(j<=dr) aux[k++]=a[j++];
     
     for(i=st;i<=dr;i++) a[i]=aux[i+1-st];
}

void merge(int st,int dr){
     int mid;
     if (dr>st) {
                 mid=(st+dr)/2;
                 merge(st,mid);
                 merge(mid+1,dr);
                 intercl(st,mid,dr);
                }
}

int main(void){
    fi>>n;
    for(i=1;i<=n;i++) fi>>a[i];
    
    merge(1,n);
    
    for(i=1;i<=n;i++) fo<<a[i]<<" "; 
    fi.close();
    fo.close();
    return 0;
}