Cod sursa(job #1016488)

Utilizator Simona13Simona Mihalca Simona13 Data 26 octombrie 2013 13:01:19
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include<iostream>
#include<fstream>
using namespace std;

int a[500001],n;

void interclasare(int low,int mid,int high)
{int i=low,j=mid+1,c[500001],k=low,t;
while (i<=mid && j<=high)
      {if(a[i]<a[j])
           c[k++]=a[i++];
      else 
           c[k++]=a[j++];
      }
for(t=i;t<=mid;t++)
   c[k++]=a[t];   
for(t=j;t<=high;t++)
   c[k++]=a[t];
for(t=low;t<=high;t++)
	a[t]=c[t];
}

void mergesort(int low,int high)
	{int mid;
	 if (low<high) 
		{mid=(low+high)/2;
		 mergesort(low,mid);
		 mergesort(mid+1,high);
		 interclasare(low,mid,high);
		}
		
	}

void citire ()
{ifstream f("algsort.in");
int i;
f>>n;
for(i=0;i<n;i++)
   	f>>a[i];
f.close(); 		
}

void afisare ()
{int i;
ofstream g("algsort.out");
for(i=0;i<n;i++)
   g<<a[i]<<" ";
g.close();
}
 
int main()
{
citire();
mergesort(0,n-1);
afisare();

return 0;	
}