Pagini recente » Cod sursa (job #927457) | Cod sursa (job #2399055) | Borderou de evaluare (job #2034103) | Cod sursa (job #3278500) | Cod sursa (job #1019287)
#include<iostream>
#include<fstream>
using namespace std;
void itc(int* a, int p, int m, int r)
{
int i = p;
int j = m+1;
int k = 0, *b;
b = new int [r-p+1];
while(i<=m && j<=r)
if(a[i]<a[j])
b[k++]=a[i++];
else
b[k++]=a[j++];
while(i<=m)
b[k++]=a[i++];
while(j<=r)
b[k++]=a[j++];
for(k=0; k<r-p+1; k++)
a[p+k]=b[k];
delete b;
}
void sor(int* a, int p, int r)
{
if(p<r)
{
int m = (p + r) / 2;
sor (a, p, m);
sor (a, m+1, r);
itc (a, p, m, r);
}
}
int main()
{
int *a, n, i;
ifstream f("algsort.in");
f>>n;
a = new int[n];
for(i=0; i<n; i++)
f>>a[i];
f.close();
sor(a, 0, n-1);
ofstream g("algsort.out");
for(i=0; i<n; i++)
g<<a[i]<<" ";
g.close();
return 0;
}