Cod sursa(job #1214969)

Utilizator toncuvasileToncu Vasile toncuvasile Data 31 iulie 2014 19:16:21
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <stdio.h>
 
#define dim 500001
 
int A[dim], B[dim], n;
 
void Interchange(int st, int dr, int mid)
{
    int i=st, j=mid+1, k=st;
    while( (i<=mid) && (j<=dr) ){
        if(A[i]<=A[j]){
            B[k++]=A[i++];
        }else{
            B[k++]=A[j++];
        }
    }
 
    while( i<=mid ){
        B[k++]=A[i++];
    }
    while( j<=dr ){
        B[k++]=A[j++];
    }
 
    int t;
    for(t=st; t<=dr; t++){
      A[t]=B[t];
    }
 
 
}
 
void MergeSort(int st, int dr)
{
    if( st<dr ){
        int mid=(st+dr)/2;
        MergeSort(st,mid);
        MergeSort(mid+1,dr);
        Interchange(st,dr,mid);
    }
}
 
int main()
{
    FILE *fin;
    fin = fopen("algsort.in","r");
 
    FILE *fout;
    fout = fopen("algsort.out","w");
 
    fscanf(fin,"%d",&n);
    int i;
    for(i=0; i<n; i++ ){
      fscanf(fin,"%d",A+i);
    }
 
    MergeSort(0,n-1);
 
    for(i=0; i<n; i++){
        fprintf(fout,"%d%c ",A[i],' ');
    }
 
}