Pagini recente » Cod sursa (job #1309638) | Cod sursa (job #2120289) | Cod sursa (job #2989374) | Cod sursa (job #446035) | Cod sursa (job #630486)
Cod sursa(job #630486)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n,a[500002];
void merge(int,int,int);
void merge_sort(int minimum,int maximum)
{
if (minimum<maximum)
{
int medium=(minimum+maximum)/2;
merge_sort(minimum,medium);
merge_sort(medium+1,maximum);
merge(minimum,medium,maximum);
}
}
void merge(int min, int med, int max)
{
int i=min;
int j=med+1;
int k=min;
int b[500002];
while((i<=med) and (j<=max))
{
if (a[i]<a[j])
{
b[k]=a[i];
i++;
}
else
{
b[k]=a[j];
j++;
}
k++;
}
if (j>max)
while (i<=med)
{
b[k]=a[i];
i++;
k++;
}
else
while (j<=max)
{
b[k]=a[j];
j++;
k++;
}
for (int i=min;i<=max;i++)
a[i]=b[i];
}
void citire()
{
in>>n;
for (int i=1;i<=n;i++)
in >> a[i];
}
void afisare()
{
for(int i=1;i<=n;i++)
out<<a[i]<<" ";
}
int main()
{
citire();
merge_sort(1,n);
afisare();
return 0;
}