Cod sursa(job #1023418)

Utilizator BH01Bogdan Heimerl BH01 Data 6 noiembrie 2013 22:00:54
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>

using namespace std;


void merge(int *a, int *b, int st, int mij, int dr)
{
    int h,i,j,k;
    h=st;
    i=st;
    j=mij+1;

    while((h<=mij)&&(j<=dr))
    {
        if(a[h]<=a[j])
        {b[i]=a[h];
         h++;}
        else
        {b[i]=a[j];
         j++;}
        i++;
    }
    if(h>mij)
    {
		for(k=j; k<=dr; k++)
        {b[i]=a[k];
         i++;}
    }
    else
    {
        for(k=h; k<=mij; k++)
        {b[i]=a[k];
         i++;}
    }
    for(k=st; k<=dr; k++) a[k]=b[k];
}


void mergesort(int *a, int*b, int st, int dr)
{
    int mij;
    if(st<dr)
    {
        mij=(st+dr)/2;
        mergesort(a,b,st,mij);
        mergesort(a,b,mij+1,dr);
        merge(a,b,st,mij,dr);
    }
}

int main()
{ int i, n, *b, *a;

  ifstream f("algsort.in");
  ofstream g("algsort.out");
  f>>n;

  a=(int*)malloc(n*sizeof(int));
  b=(int*)malloc(n*sizeof(int));

  for(i=0;i<n;i++)
    f>>a[i];
  f.close();
  mergesort(a,b,0,n-1);

    for(i=0; i<n; i++)
        {cout<<a[i]<<" ";
	     g<<a[i]<<" ";}
	g.close();
}