Cod sursa(job #1523239)

Utilizator baban_bogdanbaban bogdan baban_bogdan Data 12 noiembrie 2015 15:08:25
Problema Sortare prin comparare Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.93 kb
#include <stdio.h>
#include <stdlib.h>

int aux[500001];

int v[500001];

void interclasare(int v[] , int st , int dr){

    int m=(st+dr)/2,i,j,k;

    i=k=st;
    j=m+1;
    while(i<=m && j<=dr){
        if(v[i]<v[j])
            aux[k++]=v[i++];
        else
            aux[k++]=v[j++];
    }
    while(i<=m)
        aux[k++]=v[i++];
    while(j<=dr)
        aux[k++]=v[j++];
    for(k=st;k<=dr;k++)
        v[k]=aux[k];

}
void sortare(int v[500001] , int st, int dr){

    if(st==dr)
        return ;

    int m=(st+dr)/2;
    sortare(v,st,m);
    sortare(v,m+1,dr);
    interclasare(v,st,dr);
}

int main()
{
    FILE *fin, *fout;
    int n,i,st,dr;

    fin=fopen("sortare.in" , "r" );
    fout=fopen("sortare.out" , "w");
    fscanf(fin, "%d" , &n);
    for(i=1;i<=n;i++)
        fscanf(fin, "%d" ,&v[i] );

    sortare(v, 1 , n);
    for(i=1;i<=n;i++)
        fprintf(fout, "%d " , v[i] );

    fclose(fin);
    fclose(fout);
    return 0;
}