Pagini recente » Cod sursa (job #1749307) | Cod sursa (job #34856) | Rating Ionescu Andrei (Andrei_Info1) | Judete | Cod sursa (job #2241306)
#include <iostream>
using namespace std;
int v[1001];
void mergesort(int stg, int dr)
{
int t = 0, w[1001];
if (stg==dr)
return;
int mij = (stg + dr) / 2;
mergesort(stg, mij);
mergesort(mij+1, dr);
//interclasarea
memset(w, 0, sizeof(w));
int p1 = 0, p2 = 0;
for(p1=stg, p2=mij+1; p1<=mij && p2<=dr; )
{
if (v[p1]<v[p2])
{
t++;
w[t]=v[p1];
p1++;
}
else
{
t++;
w[t]=v[p2];
p2++;
}
}
for (int i = p1; i <= mij; i++) {
t++;
w[t] = v[i];
}
for (int i = p2; i <= dr; i++) {
t++;
w[t] = v[i];
}
for (int i = stg, j = 1; i <= dr; i++, j++) {
v[i] = w[j];
}
}
int main()
{
int n, i;
cin >> n;
for (i = 1;i <= n;i++) {
cin>>v[i];
}
mergesort(1, n);
for (int i = 1; i <= n; i++) {
cout << v[i] << " ";
}
return 0;
}