Pagini recente » Cod sursa (job #1378502) | Cod sursa (job #1240752) | Cod sursa (job #2468424) | Cod sursa (job #1476216) | Cod sursa (job #2859535)
#include <iostream>
using namespace std;
void Merge(unsigned long long* arr, unsigned long long l,unsigned long long m,unsigned long long r)
{ cout <<".";
unsigned long long p1 = l, p2 = m + 1, sec[500001], cnt = 0;
while(p1 != m + 1 && p2 != r + 1)
{
if(arr[p1] <= arr[p2])
{
sec[cnt] = arr[p1];
p1++;
}
else
{
sec[cnt] = arr[p2];
p2++;
}
cnt++;
}
unsigned long long x = 0;
while(p1 < m + 1)
{
arr[cnt + x] = arr[p1];
x++;
p1++;
}
while(p2 < r + 1)
{
arr[cnt + x] = arr[p2];
x++;
p2++;
}
for(int i = 0; i < cnt; i++)
{
arr[l + i] = sec[i];
}
}
void MergeSort(unsigned long long* arr, unsigned long long l, unsigned long long r)
{
unsigned long long m = (l + r)/2;
if(l < r)
{
cout << ":";
MergeSort(arr, l, m);
MergeSort(arr, m + 1, r);
cout << "?";
Merge(arr, l, m, r);
}
}
unsigned long long v[10], n;
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> v[i];
}
MergeSort(v, 1, n);
for(int i = 1; i <= n; i++)
{
cout << v[i] << " ";
}
return 0;
}