Cod sursa(job #2241307)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 15 septembrie 2018 15:09:28
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <iostream>
#include <string.h>

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;
}