Cod sursa(job #1046384)

Utilizator vezure12vezure cristi vezure12 Data 2 decembrie 2013 21:24:46
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include<iostream>
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[1000],n,b[1000],i;
void merge(int *,int *,int,int,int);
void mergesort(int a[],int b[],int low,int high)
{   int pivot;
    if(low<high)
    {   pivot=(low+high)/2;
        mergesort(a,b,low,pivot);
        mergesort(a,b,pivot+1,high);
        merge(a,b,low,pivot,high);
    }
}
void merge(int a[],int b[],int low,int pivot,int high)
{   int h,i,m,k;
    h=low;
    i=low;
    m=pivot+1;
    while((h<=pivot)&&(m<=high))
    {   if(a[h]<=a[m])
        {   b[i]=a[h];
            h++;
        }
        else
        {   b[i]=a[m];
            m++;
        }
        i++;
    }
    if(h>pivot) { for(k=m;k<=high;k++)
                    {  b[i]=a[k];
                       i++;
                }
    }
    else
    {   for(k=h;k<=pivot;k++)
        {   b[i]=a[k];
            i++;
        }
    }
    for(k=low;k<=high;k++) a[k]=b[k];
}
int main()
{   f>>n;
    for(i=1;i<=n;i++)
		f>>a[i];
	mergesort(a,b,1,n);
    for(int i=1;i<=n;i++)
        g<<a[i]<<" ";
    g<<endl;
	return 0;
}