Pagini recente » Cod sursa (job #1163140) | Cod sursa (job #133912) | Cod sursa (job #2661276) | Cod sursa (job #1819725) | Cod sursa (job #1896906)
#include <fstream>
using namespace std;
int n, v[500005];
void read()
{
ifstream fin ("algsort.in");
fin >> n;
for (int i = 0; i < n; ++i)
fin >> v[i];
fin.close();
}
void write()
{
ofstream fout ("algsort.out");
for (int i = 0; i < n; ++i)
fout << v[i] << " ";
fout << "\n";
fout.close();
}
void interclasare(int p, int m, int q)
{
int r[n];
int i = p, j = m+1, k = -1;
while(i <= m && j <= q)
if(v[i] < v[j])
r[++k] = v[i++];
else
r[++k] = v[j++];
while(i <= m)
r[++k] = v[i++];
while(j <= q)
r[++k] = v[j++];
for (int w = p; w <= q; ++w)
v[w] = r[w-p];
}
void mergeSort(int p = 0, int q = n-1)
{
if(q > p){
int m = (p+q)/2;
mergeSort(p, m);
mergeSort(m+1, q);
interclasare(p, m, q);
}
}
int main()
{
read();
mergeSort();
write();
return 0;
}