Pagini recente » Cod sursa (job #2886578) | Cod sursa (job #2222301) | Cod sursa (job #1707181) | Cod sursa (job #2910705) | Cod sursa (job #953452)
Cod sursa(job #953452)
#include<fstream>
using namespace std;
void merge(int *a, int *aux, int low, int mid, int high)
{
int i, j, k;
for(i = low; i <= high; i++)
aux[i] = a[i];
i = k = low;
j = mid + 1;
while(i <= mid && j <= high)
{
if(aux[i] < aux[j])
a[k++] = aux[i++];
else
a[k++] = aux[j++];
}
while(i <= mid)
a[k++] = aux[i++];
while(j <= high)
a[k++] = aux[j++];
}
void mergeSort(int *a, int *aux, int low, int high)
{
if(low < high)
{
int k = low + (high - low ) / 2;
mergeSort(a, aux, low, k);
mergeSort(a, aux, k + 1, high);
merge(a, aux, low, k, high);
}
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int *a, n, i, *aux;
fin >> n;
a = new int[n];
aux = new int[n];
for(i = 0; i < n; i++)
fin >> a[i];
mergeSort(a, aux, 0, n - 1);
for(i = 0; i < n; i++)
fout << a[i] << " ";
return 0;
}