Cod sursa(job #540258)

Utilizator preda_alexandruPreda Alexandru preda_alexandru Data 23 februarie 2011 20:38:36
Problema Sortare prin comparare Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 0.72 kb
#include<stdio.h>

void msort(int *v,int li,int ls)
{
  if(li==ls)return;
  int m=(li+ls)/2;
  msort(v,li,m);
  msort(v,m+1,ls);
  int i, j, k, *aux;
  aux=(int*)malloc(sizeof(int)*(ls-li+1));
  i=li;
  j=m+1;
  k=0;
  while(i<=m && j<=ls)if(v[i]<=v[j])aux[k++]=v[i++];
                      else aux[k++]=v[j++];
  if(i<=m)do aux[k++]=v[i++];while(i<=m);
  else while(j<=ls)aux[k++]=v[j++];
  for(i=li;i<=ls;i++)v[i]=aux[i-li];
  free(aux);
}

int main()
{
  FILE *f,*g;
  int i,nv,*v;
  f=fopen("algsort.in","rt");
  g=fopen("algsort.out","wt");
  fscanf(f,"%i",&nv);
  v=(int*)malloc(sizeof(int)*nv);
  for(i=0;i<nv;i++)fscanf(f,"%i",v+i);
  msort(v,0,nv);
  for(i=0;i<nv;i++)fprintf(g,"%i ",v[i]);
}