Pagini recente » Cod sursa (job #2242549) | Cod sursa (job #698867) | Cod sursa (job #453602) | Cod sursa (job #1442944) | Cod sursa (job #2968131)
#include <fstream>
using namespace std;
ifstream cin ("algsort.in");
ofstream cout ("algsort.out");
int sir[500000] , sort[500000];
void MergeSort (int stanga , int dreapta)
{
if (stanga < dreapta)
{
int mijloc = (stanga + dreapta) / 2;
MergeSort (stanga , mijloc);
MergeSort (mijloc + 1 , dreapta);
int indice_1 = stanga , indice_2 = mijloc + 1 , indice_3 = 0;
while (indice_1 <= mijloc && indice_2 <= dreapta)
{
if (sir[indice_1] < sir[indice_2])
sort[indice_3++] = sir[indice_1++];
else
sort[indice_3++] = sir[indice_2++];
}
while (indice_1 <= mijloc)
sort[indice_3++] = sir[indice_1++];
while (indice_2 <= dreapta)
sort[indice_3++] = sir[indice_2++];
indice_1 = stanga , indice_2 = 0;
while (indice_1 <= dreapta)
sir[indice_1++] = sort[indice_2++];
}
}
int main ()
{
int lungime;
cin >> lungime;
for (int indice = 0 ; indice < lungime ; indice++)
cin >> sir[indice];
MergeSort (0 , lungime - 1);
for (int indice = 0 ; indice < lungime ; indice++)
cout << sir[indice] << ' ';
cout.close(); cin.close();
return 0;
}