Pagini recente » Cod sursa (job #1236957) | Cod sursa (job #2278415) | Cod sursa (job #1887595) | Cod sursa (job #2870460) | Cod sursa (job #2025381)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[500005];
void merge(int, int, int);
void merge_sort(int low, int high)
{
int mid;
if(low < high)
{
mid = low + (high - low) / 2;
merge_sort(low, mid);
merge_sort(mid + 1, high);
merge(low, mid, high);
}
}
void merge(int low,int mid,int high)
{
int h, i, j, b[50], k;
h = low;
i = low;
j = mid + 1;
while((h <= mid) && (j <= high))
{
if(a[h] <= a[j])
{
b[i] = a[h];
h++;
}
else
{
b[i] = a[j];
j++;
}
i++;
}
if(h > mid)
{
for(k = j; k <= high; k++)
{
b[i] = a[k];
i++;
}
}
else
{
for(k = h; k <= mid; k++)
{
b[i] = a[k];
i++;
}
}
for(k = low; k <= high; k++) a[k] = b[k];
}
int main()
{
int num;
fin >> num;
for(int i = 0; i < num; i++)
{
fin >> a[i] ;
}
merge_sort(0, num - 1);
for(int i = 0; i < num; i++)
{
fout << a[i] << ' ';
}
return 0;
}