Pagini recente » Cod sursa (job #625328) | Cod sursa (job #3149846) | Cod sursa (job #1397903) | Cod sursa (job #2957604) | Cod sursa (job #1016216)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void merge(int a[],int low,int high,int pivot)
{
int *b = new int[500001];
int i,j,h,k;
i = low;
j = pivot + 1;
h = low;
while((i<=pivot) && (j<=high))
{
if(a[i]<a[j])
{
b[h] = a[i];
i++;
}
else
{
b[h] = a[j];
j++;
}
h++;
}
if(i>pivot)
{
for(k=j;k<=high;k++)
{
b[h] = a[k];
h++;
}
}
else
{
for(k=i;k<=pivot;k++)
{
b[h] = a[k];
h++;
}
}
for(k=low;k<=high;k++) a[k] = b[k];
}
void mergeSort(int v[],int low,int high)
{
int pivot;
if(low<high)
{
pivot = (low+high)/2;
mergeSort(v,low,pivot);
mergeSort(v,pivot+1,high);
merge(v,low,high,pivot);
}
}
int main()
{
int n,i;
int * v = new int[500001];
fin>>n;
for(i=0;i<n;i++)
{
fin>>v[i];
}
mergeSort(v,0,n-1);
for(i=0;i<n;i++)
{
fout<<v[i]<<" ";
}
return 0;
}