Pagini recente » Diferente pentru home intre reviziile 757 si 756 | Cod sursa (job #1293550) | Cod sursa (job #1750448) | Cod sursa (job #1296487) | Cod sursa (job #1321331)
#include <cstdio>
using namespace std;
int a[500001];
void Merge(int arr[], int size, int low, int middle, int high)
{
int temp[size];
for(int i=low;i<=high;i++)
temp[i]=arr[i];
int i=low;
int j=middle+1;
int k=low;
while(i<=middle && j<=high)
{
if(temp[i]<=temp[j])
{
arr[k]=temp[i];
i++;
}
else
{
arr[k]=temp[j];
j++;
}
k++;
}
while(i<=middle)
{
arr[k]=temp[i];
i++;
k++;
}
}
void MergeSort (int arr[] ,int size ,int low,int high)
{
if(low<high)
{
int middle=(low+high)/2;
MergeSort(arr, size, low, middle);
MergeSort(arr, size, middle+1, high);
Merge(arr, size, low, middle, high);
}
}
int main()
{
freopen ("algsort.in","r",stdin);
freopen ("algsort.out","w",stdout);
int n,i,size;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
size=n;
MergeSort(a, size, 1, n);
for(i=1;i<=n;i++)
printf("%d ",a[i]);
return 0;
}