Pagini recente » Cod sursa (job #2557677) | Cod sursa (job #2367327) | Cod sursa (job #2850258) | Cod sursa (job #603673) | Cod sursa (job #2862360)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
/*
int cmp(const int &a, const int &b) ///sortare descrescatoare
{
return a>b;
}
*/
void Merge(long v[],long st, long dr, long mid)
{
long i,j,k;
long left[mid-st+1];
long right[dr-mid];
for(i=0;i<mid-st+1;i++)
left[i]=v[st+i];
for(j=0;j<dr-mid;j++)
right[j]=v[mid+j+1];
i=0; j=0;
k=st;
for(k=st;i<mid-st+1&&j<dr-mid;k++)
if(left[i]<=right[j])
v[k]=left[i++];
else
v[k]=right[j++];
while(i<mid-st+1)
v[k++]=left[i++];
while(j<dr-mid)
v[k++]=right[j++];
}
void MergeSort(long v[],long st,long dr)
{
long mid;
if(st<dr)
{
mid=(st+dr)/2;
MergeSort(v,st,mid);
MergeSort(v,mid+1,dr);
Merge(v,st,dr,mid);
}
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
long n;
///sortare perechi
/*pair <int,int> v[1000];
f>>n;
for(int i=1;i<=n;i++)
f>>v[i].first>>v[i].second;
sort(v+1,v+n+1);
*/
f>>n;
long v[n];
for(long i=0;i<n;i++)
f>>v[i];
/*for(int i=1;i<=n;i++)
g<<v[i].first<<" "<<v[i].second<<endl;
*/
MergeSort(v,0,n-1);
for(long i=0;i<n;i++)
g<<v[i]<<" ";
f.close();
g.close();
return 0;
/* long n, v[500000];
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
sort(v+1,v+n+1,cmp);
for(int i=1;i<=n;i++)
g<<v[i]<<" ";
f.close();
g.close();
return 0;
*/
}