Pagini recente » Cod sursa (job #3306764) | Cod sursa (job #2126533) | Cod sursa (job #967265) | Cod sursa (job #1279563) | Cod sursa (job #3311993)
#include <fstream>
void fesul(int *t, int s, int mid, int n)
{
int *tmp = new int[n - s + 1], m = 0, indxL = s, indxR = mid + 1;
while (indxL <= mid && indxR <= n)
if (t[indxL] > t[indxR])
tmp[m++] = t[indxR++];
else
tmp[m++] = t[indxL++];
while (indxL <= mid)
tmp[m++] = t[indxL++];
while (indxR <= n)
tmp[m++] = t[indxR++];
for (int i = 0; i < m; i++)
t[s + i] = tmp[i];
delete[] tmp;
return;
}
// SORT--------------------------------
void merge(int *t, int s, int n)
{
if (s >= n)
return;
int mid = (s + n) / 2;
merge(t, s, mid);
merge(t, mid + 1, n);
fesul(t, s, mid, n);
return;
}
// MAIN -------------------------------
int main()
{
int n;
std::ifstream in("algsort.in");
in >> n;
int *t = new int[n];
for (int i = 0; i < n; i++)
in >> t[i];
in.close();
merge(t, 0, n - 1);
std::ofstream out("algsort.out");
for (int i = 0; i < n; i++)
out << t[i] << ' ';
out.close();
delete[] t;
return 0;
}