Cod sursa(job #540274)

Utilizator preda_alexandruPreda Alexandru preda_alexandru Data 23 februarie 2011 20:49:37
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include<fstream.h>
#include<stdlib.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()
{
  int i, nv, *v;
  ifstream f("algsort.in");
  ofstream g("algsort.out");
  f>>nv;
  v=(int*)malloc(sizeof(int)*nv);
  for(i=0;i<nv;i++)f>>v[i];
  msort(v,0,nv);
  for(i=0;i<nv;i++)g<<v[i]<<' ';
}