Pagini recente » Istoria paginii runda/concurs_runda1/clasament | Cod sursa (job #430047) | Cod sursa (job #1109568) | Cod sursa (job #1123553) | Cod sursa (job #344530)
Cod sursa(job #344530)
#include <fstream.h>
int V[500001];
int mergesort(int [],int,int);
void merge(int [],int,int,int);
int main()
{
int i,N;
ifstream in("algsort.in");
in>>N;
for(i=1;i<=N;i++)
in>>V[i];
in.close();
mergesort(V,1,N);
ofstream out("algsort.out");
for(i=1;i<=N;i++)
out<<V[i]<<' ';
out.close();
return 0;
}
int mergesort(int v[],int first, int last)
{
int mid;
if(first<last)
{
mid=(first+last)/2;
mergesort(v,first,mid);
mergesort(v,mid+1,last);
merge(v,first,mid,last);
}
else return 0;
}
void merge(int v[],int first,int mid,int last)
{
int i=first,j=mid+1,k=first,c[500001];
while(i<=mid && j<=last)
{
if(v[i]<v[j]){ c[k]=v[i]; i++; }
else{ c[k]=v[j]; j++; }
k++;
}
while(i<=mid){ c[k]=v[i]; k++; i++; }
while(j<=last){ c[k]=v[j]; k++; j++; }
for(i=first;i<k;i++) v[i]=c[i];
}