Pagini recente » Cod sursa (job #1291895) | Cod sursa (job #1973528) | Cod sursa (job #632507) | Cod sursa (job #519024) | Cod sursa (job #2292457)
#include <iostream>
#include <fstream>
using namespace std;
void interclasare (int *v, int st, int m, int dr)
{
int i, j, *v1, k = 0;
v1 = new int [dr-st+2];
i = st;
j = m+1;
while ( i <= m && j <= dr)
{
if ( v[i] <= v[j])
v1[k++] = v[i++];
else v1[k++] = v[j++];
}
while (i <= m )
v1[k++] = v[i++];
while ( j <= dr)
v1[k++] = v[j++];
for ( i = st, k = 0 ; i <= dr; i++, k++)
v[i] = v1[k];
delete(v1);
}
void MergeSort (int *v, int st, int dr)
{
if ( st >= dr)
return ;
int m = (st+dr)/2;
MergeSort( v, st, m);
MergeSort (v, m+1 , dr);
interclasare(v, st,m,dr);
}
int main()
{
int n , i, *v;
ifstream in ( "algsort.in");
ofstream out ( "algsort.out");
in >> n;
v = new int [n+1];
for ( i=0 ; i< n ; i++)
in >> v[i];
MergeSort(v, 0, n-1 );
for ( i=0 ; i < n ; i++)
out << v[i] << " ";
in.close();
out.close();
delete(v);
return 0;
}