Pagini recente » Cod sursa (job #511201) | Cod sursa (job #298776) | Cod sursa (job #3130013) | Cod sursa (job #3124054) | Cod sursa (job #2063328)
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/*
* File: main.cpp
* Author: mihailturcan
*
* Created on November 11, 2017, 10:14 AM
*/
#include <cstdlib>
#include <fstream>
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");
int n;
unsigned X[500005],Y[500005];
void merge_sort(int st, int dr)
{
if(dr==st)
return;
if(dr-st==1)
if(X[st]>X[dr])
swap(X[st],X[dr]);
else
;
else
{
int mij=(st+dr)/2,i,j,k;
merge_sort(st,mij);
merge_sort(mij+1,dr);
for(i=st, j=mij+1, k=st; i<=mij && j<=dr; )
{
if(X[i]<X[j])
Y[k++]=X[i++];
else
Y[k++]=X[j++];
}
while(i<=mij)
Y[k++]=X[i++];
while(j<=dr)
Y[k++]=X[j++];
for(i=st; i<=dr; i++)
X[i]=Y[i];
}
}
int main(int argc, char** argv)
{
fi>>n;
for(int i=1; i<=n; i++)
fi>>X[i];
merge_sort(1,n);
for(int i=1; i<=n; i++)
fo<<X[i]<<" ";
fi.close();
fo.close();
return 0;
}