Pagini recente » Cod sursa (job #261154) | Cod sursa (job #2427029) | Cod sursa (job #486380) | Cod sursa (job #1637953) | Cod sursa (job #1765986)
#include <fstream>
using namespace std;
void process(int left, int middle, int right, int arr[])
{
int length = right - left + 1;
int aux[length], k = 0, i = left, j = middle + 1;
while (i <= middle && j <= right)
{
if (arr[i] <= arr[j])
aux[k] = arr[i++];
else
aux[k] = arr[j++];
k++;
}
while (i <= middle)
aux[k++] = arr[i++];
while (j <= right)
aux[k++] = arr[j++];
k = 0;
for (i = left; i <= right; i++)
arr[i] = aux[k++];
}
void mergeSort(int left, int right, int arr[])
{
if (left < right)
{
int middle = left + (right - left) / 2;
mergeSort(left, middle, arr);
mergeSort(middle + 1, right, arr);
process(left, middle, right, arr);
}
}
int main()
{
int N;
ifstream f("algsort.in");
f >> N;
int arr[N];
for (int i = 0; i < N; i++)
f >> arr[i];
f.close();
mergeSort(0, N - 1, arr);
ofstream g("algsort.out");
for (int i = 0; i < N; i++)
g << arr[i] << ' ';
g.close();
return 0;
}