Cod sursa(job #1019613)

Utilizator gigel123Ionut. gigel123 Data 31 octombrie 2013 17:34:24
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 1.2 kb
#include <stdio.h>
#include <stdlib.h>

int v[500000],n;

void interclasare(int p,int m,int u){
    int b[500001],i,j,k;
    i=p;
    j=m+1;
    k=p;
    while(i<=m && j<=u){
        if(v[i]>v[j]){
            b[k]=v[j];
            k++;
            j++;
        }
        else{
            b[k]=v[i];
            k++;
            i++;
        }
    }
    if(i<=m)
        while(i<=m){
            b[k]=v[i];
            k++;
            i++;
        }
    if(j<=u)
        while(j<=u){
            b[k]=v[j];
            k++;
            j++;
        }
    for(i=p;i<=u;i++){
        v[i]=b[i];
    }
}

void msort(int p,int u){
    int mij,i;
    if(p<u){
        mij=(p+u)/2;
        msort(p,mij);
        msort(mij+1,u);
        interclasare(p,mij,u);
    }
}


int main()
{
    FILE* f,*g;
    f=fopen("algsort.in","r");
    g=fopen("algsort.out","w");
    int i;
    fscanf(f,"%d",&n);
    if(f){
        for(i=0;i<n;i++){
            fscanf(f,"%d",&v[i]);
        }
    }
    else printf("Fisierul nu a putut fi deschis");
    msort(0,n-1);
    for(i=0;i<n;i++){
        fprintf(g,"%d ",v[i]);
    }


    fclose(f);
    fclose(g);
    return 0;
}